如何删除第一个字段仅包含特殊字符的行?

Nad*_*ice 0 text-processing

如何删除仅在第一个分隔字段中包含/or'-or的行?.|

Adm*_*Bee 6

基于“强制”awk的解决方案:)

awk -F'|' '$1 !~ /^[\/'\''.-]+$/' input.txt
Run Code Online (Sandbox Code Playgroud)

这会将字段分隔符设置为|,并且仅在满足条件“第一个字段 ( $1) 与 RegEx ( !~) '仅包含/, ',.-' ( ^[/'.-]+$,具有适当的转义) ”不匹配时才打印。

请注意,表达这一点的语法有点复杂,因为awk程序需要用单引号 ( ) 括起来' ... ',否则 shell 会像$1在到达 之前那样解释语句awk。因此,字符列表包含单引号的“中断”(第一个'),然后是转义文字单引号 ( \'),然后是单引号awk程序的延续。

或者,也许更容易阅读,将awk程序编写为一个'...'带引号的字符串、一个"..."带引号的字符串和另一个'...'带引号的字符串的串联:

awk -F'|' '$1 !~ /^'"[\/'.-]"'+$/' input.txt
Run Code Online (Sandbox Code Playgroud)