Объединить два текстовых файла в определенном месте, sed или awk - PullRequest
3 голосов
/ 19 апреля 2010

У меня есть два текстовых файла, я хочу поместить текст посередине другого, я провел некоторое исследование и нашел информацию о добавлении отдельных строк:

У меня есть комментарий во втором текстовом файле под названием STUFFGOESHERE, поэтому я попытался:

sed '/^STUFFGOESHERE/a file1.txt' file2.txt 

sed: 1: "/ ^ STUFFGOESHERE / a long.txt": команда a ожидает \, за которой следует текст

Итак, я попробовал что-то другое, пытаясь разместить содержимое текста на основе заданной строки, но безуспешно.

Есть идеи?

Ответы [ 4 ]

5 голосов
/ 19 апреля 2010

Это должно сделать это:

sed '/STUFFGOESHERE/ r file1.txt' file2.txt

Если вы хотите удалить строку STUFFGOESHERE:

sed -e '/STUFFGOESHERE/ r file1.txt' -e '/STUFFGOESHERE/d' file2.txt

Если вы хотите изменить файл2 на месте:

sed -i -e...

(или, может быть, sed -i '' -e..., я использую GNU sed 4.1.5.)

2 голосов
/ 19 апреля 2010

Если вы можете использовать ex или ed, попробуйте

cat <<EOF | ex -e - file2.txt
/^STUFFGOESHERE/
.r file1.txt
w
q
EOF

Тот же скрипт работает для ed:

cat <<EOF | ed file2.txt
/^STUFFGOESHERE/
.r file1.txt
w
q
EOF
1 голос
/ 19 апреля 2010

Из оболочки Unix (bash, csh, zsh и т. Д.):

: | perl -e '@c = join("", map {<>} 0..eof); print $c[0] =~ /STUFFGOESHERE/ ? $` . $c[1] . $'"'"' : $c[0]' file2.txt file1.txt > newfile2.txt
1 голос
/ 19 апреля 2010
awk '/STUFFGOESHERE/{while((getline line<"file1")>0){ print line};next}1' file2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...