Удалите нежелательного персонажа, используя awk или sed - PullRequest
27 голосов
/ 04 ноября 2011

У меня есть вывод команды, из которого я хочу удалить двойные кавычки ".

Регулярное выражение:

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

Вывод:

EngineVersion="5.2.5.624"

IХотите узнать, как удалить нежелательные символы с помощью awk или sed.

Ответы [ 3 ]

37 голосов
/ 04 ноября 2011

Используйте подстановку sed: sed 's/"//g'

s/X/Y/ заменяет X на Y.

g означает, что должны быть заменены все вхождения, а не только первый.

31 голосов
/ 09 января 2013

Используя только awk, вы можете сделать (я также сократил некоторые ваши трубы):

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

Я не могу проверить это для вас, потому что я не знаю вашего точного ввода, но следующие работы:

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

См. Также этот вопрос об удалении одинарных кавычек.

3 голосов
/ 06 января 2019

tr может быть более кратким для удаления символов, чем sed или awk, особенно если вы хотите удалить различные символы из строки.

Удаление двойных кавычек:

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

Снятие скобок различных типов:

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

-d означает «удалить».

...