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

У меня есть два файла:

k.txt:

3 5 7 9 19 20 

h.txt:

000010
100001
111001

если я просто использую кошку, нет никакой новой строки. Мне нужна команда, которая обеспечила бы файл, который похож на это:

3 5 7 9 19 20 
000010
100001
111001
5
задан 23 June 2015 в 13:01

6 ответов

Понимание, что file1 не мог бы содержать новую строку, почему не просто добавляют новую строку собой? (cat file1.txt; printf "\n"; cat file2.txt ) > out.txt. Альтернативный способ сделать это, был бы printf "\n" | cat file1.txt - file2.txt

3
ответ дан 23 November 2019 в 08:35

Попробуйте это с помощью bash:

cat k.txt <(echo) h.txt > new.txt
8
ответ дан 23 November 2019 в 08:35

Это работа для вставки :

paste -sd'\n' file1 file2
  • -s заставить paste объединить все строки каждого файла в порядке командной строки.
  • -d'\n' make paste использовал символ новой строки в качестве разделителя.
3
ответ дан 23 November 2019 в 08:35

Никто еще не упомянул 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 будет содержать желаемый вывод.

1
ответ дан 23 November 2019 в 08:35

Если, поскольку 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)"
15
ответ дан 23 November 2019 в 08:35

Используя 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
5
ответ дан 23 November 2019 в 08:35

Другие вопросы по тегам:

Похожие вопросы: