Подтвердить что ты не робот

Слияние двух файлов с кошкой без новой строки

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

4b9b3361

Ответ 1

Вы можете использовать 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

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

cat <(sed -n '1n;p' file1) <(sed -n '1n;p' file2)

Ответ 3

вы используете awk:

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

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

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

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

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