Я хочу объединить два файла cat file1 file2 > file3
. Но это начинается с новой строки. Я не хочу этого. Я мог бы использовать tr для замены всех новых строк в пространстве, но я не могу этого сделать, потому что в файлах есть новые строки, которые я не хочу заменять.
Слияние двух файлов с кошкой без новой строки
Ответ 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)
будет истинным каждый раз, за исключением первой строки каждого файла. Таким образом, мы пропускаем первую строку каждого файла.