Слияние двух файлов с котом без новой строки - PullRequest
13 голосов
/ 13 октября 2011

Я хочу объединить два файла cat file1 file2 > file3.Но это начинается с новой строки.Я не хочу этогоЯ мог бы использовать tr, чтобы заменить все новые строки пробелом, но я не могу этого сделать, потому что в файлах есть новые строки, которые я не хочу заменять.

Ответы [ 3 ]

19 голосов
/ 13 октября 2011

Вы можете использовать head с -1 в качестве параметра -c flags, а -q

head -c -1 -q file1 file2 > file3

head -c -1 будет выводить все до последнего 1 байта кода (вв этом случае последний 1 байт - конец строки - не будет включен).-q означает, что имена файлов не передаются в file3, как head по умолчанию, когда head используется несколько файлов.


Или, как предполагает этот ответ - bash cat содержит несколько файлов в одну строку без перевода строки , направьте его на tr:

tr -d "\n"
2 голосов
/ 13 октября 2011

в bash, вы можете сделать:

cat <(sed -n '1n;p' file1) <(sed -n '1n;p' file2)
0 голосов
/ 13 октября 2011

вы можете использовать awk:

awk '(FNR>1){print}' file1 file2

update - как это работает:

мы просим awk обработать два файла: file1 и file2.Он напечатает всю запись (строку), если условие (FNR>1), если верно.FNR - это переменная , определенная как :

FNR - номер входной записи в текущем входном файле.

, условие (FNR>1) будет истинно каждый раз, кроме первой строки каждого файла.Таким образом, мы пропускаем первую строку каждого файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...