bash cat содержимое нескольких файлов в одну строку без новой строки

у меня есть несколько файлов с именем, начинающимся как eg_. и только каждый содержит одну строку

eg_01.txt: @Китай:129.00

eg_02.txt @uk:219.98

eg_03.txt @США:341.90

......

я ожидаю, что они будут в одной строке для отправки по URL-адресу, например: @china:129.00@uk:219.98@USA:341.90

я использую эхо cat eg_*

это дает мне вывод, похожий на строку, но на самом деле он содержит новую строку: "@china:129.00

@Великобритания:219,98 @США:341,90"

Есть ли другой способ построить ожидаемую строку и избавиться от новой строки и даже пробела? достаточно ли кота для этого?

заранее спасибо


person user271785    schedule 14.10.2010    source источник
comment
Связано: stackoverflow.com/questions/8739427/   -  person redolent    schedule 02.12.2014


Ответы (3)


Вы всегда можете передать это tr

tr "\n" " "

Это удаляет все новые строки на stdin и заменяет их пробелами

EDIT: как предложил Барт Сас, вы также можете удалить новые строки с помощью tr -d

tr -d "\n"

(примечание: просто указать пустую строку для tr для второго аргумента не получится)

person Daniel DiPaolo    schedule 14.10.2010
comment
Если вам не нужны пробелы между строками, вы можете вместо этого использовать tr -d '\n'. - person Bart Sas; 14.10.2010
comment
Примечание для очень небольшого числа людей, у которых будут файлы с разделителями строк Windows: \r\n будет использоваться строка. - person A. Wilson; 20.09.2012

Использование только одной команды

url=$(awk '{printf "%s",$0}' eg*)
person ghostdog74    schedule 14.10.2010

В Perl вы бы сделали это так:

perl -pe'chomp' eg*.txt

-p говорит: «прокрутите входной файл и выполните любой код, указанный переключателем -e. chomp в Perl говорит: «Удалите все завершающие символы новой строки».

person Andy Lester    schedule 15.10.2010