web-dev-qa-db-ja.com

awkまたはsedを使用して不要な文字を削除する

二重引用符"を削除するコマンド出力があります。

正規表現:

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

出力:

EngineVersion="5.2.5.624"

awkまたはsedで不要な文字を削除する方法を知りたいのですが。

28
abi1964

Sedの置換を使用:sed 's/"//g'

s/X/Y/はXをYに置き換えます。

gは、最初のオカレンスだけでなく、すべてのオカレンスを置き換えることを意味します。

38
Piotr Praszmo

Awkを使用するだけでできます(パイプの一部も短縮しました):

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

正確な入力がわからないため、確認できませんが、次のように動作します。

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

この質問 を参照して、単一引用符を削除してください。

32
gregswift

tr は、特に文字列から異なる文字を削除する場合、sedawkよりも文字を削除する方が簡潔です。

二重引用符の削除:

echo '"Hi"' | tr -d \"
# Produces Hi without quotes

さまざまな種類のブラケットの削除:

echo '[{Hi}]' | tr -d {}[]
# Produces Hi without brackets

-dは「削除」の略です。

3
Matthias Braun