2015-01-11 2 views
0

У меня есть эта команда AWK заменить occurrance из «прото» в file.txt струнами, найденных в replacement.txt,Как перенаправить вывод awk в файл?

awk 'FNR==NR{a[++i]=$0; next} /proto/{sub(/proto/, a[++j])} 1' replacement.txt file.txt 

Он отлично работает, но исходный файл не редактируется. Я >>, чтобы перенаправить его в файл, но выход не перенаправлен

awk 'FNR==NR{a[++i]=$0; next} /proto/{sub(/proto/, a[++j])} 1' replacement.txt file.txt >> "file.txt" 

Может кто-нибудь дать мне подсказку?

ответ

2

Ее, как вы делаете это с awk

awk 'some program' file > tmp && mv tmp file 

Ваши данные:

awk 'FNR==NR{a[++i]=$0; next} /proto/{sub(/proto/, a[++j])} 1' replacement.txt file.txt > tmp && mv tmp file.txt 
+0

Спасибо 1000 раз, он отлично работает! – KianStar

1

С простак> 4,1:

gawk -i inplace 'FNR==NR{a[++i]=$0; next} /proto/{sub(/proto/, a[++j])} 1' replacement.txt file.txt 

Если у вас нет этой функции, используйте имя временного файла, а затем mv temp file.txt

+1

Это нужно 'gnu awk> = 4.1' – Jotne

Смежные вопросы