Подтвердить что ты не робот

Удалите нежелательного персонажа, используя awk или sed

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

Regex:

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

Выход:

EngineVersion="5.2.5.624"

Я хотел бы знать, как удалить нежелательных персонажей с помощью awk или sed.

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

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

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

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

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

Ответ 3

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

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

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

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

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

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