您好,谢谢您的帮助。
试图用awk创建脚本,但失败了,我想知道是否可以这样做。例如,从输入文件中读取并删除两个模式之间的行。
文件1包含:
user2
和File2包含以下行:
ID: user1
Telpephone: 1234-5678
ID: user2
Telpephone: 1324-6598
ID: user3
Telpephone: 9087-6543
所需的输出如下:
ID: user1
Telpephone: 1234-5678
ID: user3
Telpephone: 9087-6543
我可以循环执行此操作,但是对于大文件耗时太长,可以用awk一次拍摄吗?
致谢。
答案 0 :(得分:1)
给出:
$ cat skip
user2
$ cat file
ID: user1
Telpephone: 1234-5678
ID: user2
Telpephone: 1324-6598
ID: user3
Telpephone: 9087-6543
在段落模式下使用awk
:
awk 'BEGIN{RS=""; ORS="\n\n"}
FNR==NR{for (i=1;i<=NF;i++) skip[$i]; next}
$2 in skip {next}
1' skip file
ID: user1
Telpephone: 1234-5678
ID: user3
Telpephone: 9087-6543
通过更新,现在支持多个跳过单词:
awk 'BEGIN{RS=""; ORS="\n\n"}
FNR==NR{for (i=1;i<=NF;i++) skip[$i]; next}
$2 in skip {next}
1' <(echo "user2 user3") file
ID: user1
Telpephone: 1234-5678