2010-10-14 4 views
9

Mam kilka plików o nazwie start jako eg_. a każdy z nich zawiera tylko jeden pojedynczy wierszbash cat wiele plików zawartość do pojedynczego ciągu bez nowych linii

eg_01.txt: @china: 129,00

eg_02.txt @uk: 219,98

eg_03.txt @USA: 341,90

.. ....

oczekuję kotu je w jednej linii, aby wysłać przez URL tak: @china: [email protected]: [email protected]: 341,90

używam echo cat eg_*

to daje mi wygląd wyjścia jak struna, ale rzeczywiście zawiera nową linię: "@china: 129,00

@uk: 219,98 @USA: 341,90"

czy istnieje inny sposób, w jaki mogę skonstruować ten ciąg, który jest oczekiwany i pozbyć się nowej linii, a nawet przestrzeni? jest na tyle mały, aby to zrobić?

góry dzięki

+0

Powiązane: http://stackoverflow.com/questions/8739427/bash-add-string-to-the-end-of-the-file-without-line-break – redolent

Odpowiedz

17

zawsze można rura go tr

tr "\n" " " 

który usuwa wszystkie znaki nowej linii na stdin i zastępuje je spacjami

EDIT: sugerowane przez Barta SAS można również usunąć nowe linie za pomocą tr -d

tr -d "\n" 

(uwaga: po prostu podając pusty ciąg tr dla drugiego argumentu nie zrobi)

+2

Jeśli nie chcesz spacji między strunami zamiast tego możesz użyć tr -d '\ n'. –

+0

bardzo dziękuję kotowi eg_ * | tr -d '\ n' zrobił sztuczkę – user271785

+0

Uwaga dla bardzo małej liczby osób, które będą miały pliki z terminatorami linii Windows: "\ r \ n" będzie użyty łańcuch. –

1

pomocą tylko jednego polecenia

url=$(awk '{printf "%s",$0}' eg*) 
1

W Perl, można zrobić to tak:

perl -pe'chomp' eg*.txt 

The -p mówi „pętli pliku wejściowego i robić, co kod jest określona przez przełącznik -e. chomp w Perlu mówi "Usuń wszelkie ciągłe znaki nowej linii".