我有一个命令输出,我想从中删除双引号"
。
正则表达式:
strings -a libAddressDoctor5.so |\
grep EngineVersion |
awk '{if(NR==2)print}' |
awk '{print$2}'
输出:
EngineVersion="5.2.5.624"
我想知道如何使用awk
或sed
删除不需要的字符。
答案 0 :(得分:36)
使用sed的替换:sed 's/"//g'
s/X/Y/
将Y替换为Y。
g
表示应该替换所有事件,而不仅仅是第一个。
答案 1 :(得分:31)
使用awk你可以做(我也缩短了你的一些管道):
strings -a libAddressDoctor5.so | awk '/EngineVersion/ { if(NR==2) { gsub("\"",""); print $2 } }'
我无法为您验证,因为我不知道您的确切输入,但以下工作:
echo "Blah EngineVersion=\"123\"" | awk '/EngineVersion/ { gsub("\"",""); print $2 }'
有关删除单引号的信息,请参阅this question。
答案 2 :(得分:3)
sed
或awk
相比, tr
更为简洁,尤其是当您想从字符串中删除不同的字符时。
删除双引号:
echo '"Hi"' | tr -d \"
# Produces Hi without quotes
卸下各种支架:
echo '[{Hi}]' | tr -d {}[]
# Produces Hi without brackets
-d
代表“删除”。