如何删除仅在第一个分隔字段中包含/
or'
或-
or的行?.
|
sed 's/^\.\d; /^\-/d; /^\//d' file > file_out
Run Code Online (Sandbox Code Playgroud)
/|98374|
/trust|q83129|
//|392720|
//cust|23892|
.|9374|
.abcd|28374|
'|238674|
'hcsu|3810|
-|327492|
-abcde|9837|
Run Code Online (Sandbox Code Playgroud)
.abcd|28374|
/trust|q83129|
//cust|23892|
'hcsu|3810|
-abcde|9837|
Run Code Online (Sandbox Code Playgroud)
基于“强制”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)
归档时间: |
|
查看次数: |
1162 次 |
最近记录: |