用awk替换```char

SIM*_*MEL 18 awk gsub

我有一个单独的行:和一个'我想要摆脱的行.我想用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)


ssa*_*ota 9

这有效:

awk '{gsub( "[:'\'']","" ); print}'
Run Code Online (Sandbox Code Playgroud)


Dim*_*lov 7

你可以使用:

  1. 单引号的八进制代码:

    [:\47]
    
    Run Code Online (Sandbox Code Playgroud)
  2. 双引号内的单引号,但在这种情况下,shell将扩展特殊字符:

    % print a\': | awk "sub(/[:']/, x)"        
    a
    
    Run Code Online (Sandbox Code Playgroud)
  3. 使用动态正则表达式,但与此方法相关的性能影响:

    % print a\': | awk -vrx="[:\\\']" 'sub(rx, x)'  
    a
    
    Run Code Online (Sandbox Code Playgroud)


Ben*_*oit 6

使用bash,您无法在包含单引号的文字中插入单引号.用'"'"'例如.

首先'关闭当前文字,然后"'"将其与仅包含单引号的文字连接,并'重新打开字符串文字,这也将连接在一起.

你想要的是:

awk '{gsub ( "[:'"'"']","" ) ; print $0; }'
Run Code Online (Sandbox Code Playgroud)

ssapkota的替代方案也很好('\'').