我正在尝试做以下事情,但要么我太累了又无法思考,或者有些奇怪的事情正在逃避:
scanimage -L | gawk '/N650U/ {print gensub("[\'`]", "", "g", $2)}'
pipe bquote>
Run Code Online (Sandbox Code Playgroud)
这样做的习惯是创建一个包含单引号的变量,然后使用:
scanimage -L | gawk '/N650U/ {print gensub(q"`", "", "g", $2)}' q="'"
Run Code Online (Sandbox Code Playgroud)
但是,由于您在字符类中使用它,这不会起作用所以您需要这样做:
scanimage -L | gawk '/N650U/ {print gensub("[`'\'']", "", "g", $2)}'
<-- 1st pair --> <-- 2nd pair -->
Run Code Online (Sandbox Code Playgroud)
如果使用另一种方法bash是使用$''它不支持逃逸单引号
scanimage -L | gawk $'/N650U/ {print gensub("[`\']", "", "g", $2)}'
Run Code Online (Sandbox Code Playgroud)
你在第二种情况下所做的就是在你的文字单引号之前创建一个单引号对,转义单引号,这样shell就不会解释它,然后在它之后创建另一个单引号对.
$ echo $'foo`\'' | awk '{gsub(/[o`'\'']/,"#")}1'
f####
Run Code Online (Sandbox Code Playgroud)
$ echo "foo" | awk '{print q$0q}' q="'"
'foo'
Run Code Online (Sandbox Code Playgroud)
$''echo $'foo`\'' | awk $'{gsub(/[o`\']/,"#")}1'
f####
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1899 次 |
| 最近记录: |