我有 2 个文件,英语文件(源文件)和意大利语文件(目标文件)。它们都具有相同的行数。我跑 awk 'NF<3'
删除我的意大利语文件中超过 2 个单词的所有字符串,但同时我想删除从英语文件中的意大利语文件中删除的特定源字符串(我想我可以处理行号) .当然,我必须执行 sed
命令在源字符串的行号上(因为两个文件中的字符串不同),但我不知道如何在使用 awk
时同时执行此操作从意大利语文件中删除这些字符串,因为当我启动命令时,我丢失了文件中的等效行号。
例子
EN
1 Santa Claus
2 Pigs don't fly
3 The son of the father
4 Elf
IT
1 Babbo Natale
2 I maiali non volano
3 Il figlio del padre
4 Elfo
I run awk on IT file
OUTPUT FILE
IT
1 Babbo Natale
4 Elfo
用 awk
删除的行在 IT 文件中也需要从 EN 文件中删除(我不能在 eng 文件上再次使用 awk,因为 eng 文件的字数与 IT 文件不同,它只是行号有效)
THE OUTPUT EN FILE MUST BE
1 Santa Claus
2 Elf
有什么建议吗? 如有不明白请追问...
最佳答案
作为源文件:
$ cat it.dat
Babbo Natale
I maiali non volano
Il figlio del padre
Elfo
$ cat en.dat
Santa Claus
Pigs don't fly
The son of the father
Elf
这个awk
:
awk 'NR==FNR{if(NF>3){a[NR]}else{a[NR]=1;print > "filtered_it.dat"}}
NR!=FNR && a[FNR]{print > "filtered_en.dat"}' it.dat en.dat
结果
$ cat filtered_id.dat
Babbo Natale
Elfo
$ cat filtered_en.dat
Santa Claus
Elf
关于linux - 同时执行 awk 和 sed 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34470792/