我有一个单独的行:和一个'我想要摆脱的行.我想用awk它.我尝试过使用:
awk '{gsub ( "[:\\']","" ) ; print $0 }'
Run Code Online (Sandbox Code Playgroud)
和
awk '{gsub ( "[:\']","" ) ; print $0 }'
Run Code Online (Sandbox Code Playgroud)
和
awk '{gsub ( "[:']","" ) ; print $0 }'
Run Code Online (Sandbox Code Playgroud)
他们没有工作,但返回错误Unmatched "..当我放
awk '{gsub ( "[:_]","" ) ; print $0 }'
Run Code Online (Sandbox Code Playgroud)
然后它工作并删除所有:和_字符.我该如何摆脱'炭火?
Fre*_*ihl 11
tr 是为了这个目的
echo test\'\'\'\':::string | tr -d \':
teststring
$ echo test\'\'\'\':::string | awk '{gsub(/[:\47]*/,"");print $0}'
teststring
Run Code Online (Sandbox Code Playgroud)
你可以使用:
单引号的八进制代码:
[:\47]
Run Code Online (Sandbox Code Playgroud)双引号内的单引号,但在这种情况下,shell将扩展特殊字符:
% print a\': | awk "sub(/[:']/, x)"
a
Run Code Online (Sandbox Code Playgroud)使用动态正则表达式,但与此方法相关的性能影响:
% print a\': | awk -vrx="[:\\\']" 'sub(rx, x)'
a
Run Code Online (Sandbox Code Playgroud)使用bash,您无法在包含单引号的文字中插入单引号.用'"'"'例如.
首先'关闭当前文字,然后"'"将其与仅包含单引号的文字连接,并'重新打开字符串文字,这也将连接在一起.
你想要的是:
awk '{gsub ( "[:'"'"']","" ) ; print $0; }'
Run Code Online (Sandbox Code Playgroud)
ssapkota的替代方案也很好('\'').