使用awk删除不需要的字符

abi*_*964 29 linux awk replace sed

我有一个命令输出,我想从中删除双引号".

正则表达式:

strings -a libAddressDoctor5.so |\
grep EngineVersion |
awk '{if(NR==2)print}' |
awk '{print$2}'
Run Code Online (Sandbox Code Playgroud)

输出:

EngineVersion="5.2.5.624"
Run Code Online (Sandbox Code Playgroud)

我想知道如何用awk或删除不需要的字符sed.

Pio*_*zmo 40

使用sed的替换: sed 's/"//g'

s/X/Y/ 用Y替换X.

g 意味着应该替换所有事件,而不仅仅是第一个事件.


gre*_*ift 33

使用awk你可以做(​​我也缩短了你的一些管道):

strings -a libAddressDoctor5.so | awk '/EngineVersion/ { if(NR==2) { gsub("\"",""); print $2 } }'
Run Code Online (Sandbox Code Playgroud)

我无法为您验证,因为我不知道您的确切输入,但以下工作:

echo "Blah EngineVersion=\"123\"" | awk '/EngineVersion/ { gsub("\"",""); print $2 }'
Run Code Online (Sandbox Code Playgroud)

另请参阅有关删除单引号的此问题.

  • awk的`gsub`函数是我需要直接从awk脚本中删除字符,而不是命令行,谢谢. (5认同)

Mat*_*aun 11

tr可以比sedor更简洁地删除字符awk,尤其是当您想从字符串中删除多个不同的字符时。

去除双引号:

echo '"Hi"' | tr -d \"
# Prints Hi without quotes
Run Code Online (Sandbox Code Playgroud)

删除不同类型的括号:

echo '[{Hi}]' | tr -d {}[]
# Prints Hi without brackets
Run Code Online (Sandbox Code Playgroud)

-d 代表“删除”。