У меня есть два файла:
k.txt:
3 5 7 9 19 20
h.txt:
000010
100001
111001
если я просто использую кошку, нет никакой новой строки. Мне нужна команда, которая обеспечила бы файл, который похож на это:
3 5 7 9 19 20
000010
100001
111001
Понимание, что file1 не мог бы содержать новую строку, почему не просто добавляют новую строку собой? (cat file1.txt; printf "\n"; cat file2.txt ) > out.txt
. Альтернативный способ сделать это, был бы printf "\n" | cat file1.txt - file2.txt
Попробуйте это с помощью bash:
cat k.txt <(echo) h.txt > new.txt
Это работа для вставки :
paste -sd'\n' file1 file2
-s
заставить paste
объединить все строки каждого файла в порядке командной строки. -d'\n'
make paste
использовал символ новой строки в качестве разделителя. Никто еще не упомянул python
. Здесь это:
#!/usr/bin/env python2
with open('k.txt') as fk, open('h.txt') as fh, open('out.txt', 'a') as fo:
for line in fk:
fo.write(line)
fo.write('\n')
for line in fh:
fo.write(line)
Здесь после чтения f.txt
файл мы вставили новую строку вручную в out.txt
файл (fo.write('\n')
) и с другой стороны добавляем содержание k.txt
файл к out.txt
файл. Наконец out.txt
будет содержать желаемый вывод.
Если, поскольку steeldriver предлагает, Ваши файлы не заканчиваются новой строкой, Вы могли попробовать:
awk '{print}' k.txt h.txt > newfile
или, если Вам нравится играть в гольф
awk 1 k.txt h.txt > newfile
или
perl -lne 'print' k.txt h.txt
или
( cat k.txt ; echo ""; cat h.txt; echo ) > newfile
или
echo "$(cat k.txt)"; echo "$(cat h.txt)"
Используя sed
:
sed '/^/ r h.txt' k.txt
или лучше (спасибо @steeldriver)
sed '$a\' k.txt h.txt
Используя ed
:
(echo "0a"; cat k.txt; echo "."; echo "wq") | ed -s h.txt
и для недостающей новой строки в k.txt
:
(echo "0a"; cat k.txt; echo ""; echo "."; echo "wq") | ed -s h.txt
или если Вам нужен отдельный выходной файл:
(echo "0a"; cat k.txt; echo ""; echo "."; echo "w out.txt"; echo "q") | ed -s h.txt