Удалить ненужный символ с помощью awk

20

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

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

Выход : EngineVersion="5.2.5.624"

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

    
задан abi1964 04.11.2011 в 12:27
источник
  • sed 's / "// g' - удаляет все" –  Piotr Praszmo 04.11.2011 в 12:30
  • @Banthar: Спасибо, что означает s здесь? –  abi1964 04.11.2011 в 12:34
  • s означает «заменить». Чтение / "// g" слева направо, говорит, что вместо слова «ничего и делать это для каждого» на входе. –  Justin Anderson 07.10.2012 в 21:02

2 ответа

23

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

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

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

    
ответ дан Piotr Praszmo 04.11.2011 в 12:43
источник
25

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

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

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

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

См. также замену символа '' 'с помощью awk

    
ответ дан gregswift 09.01.2013 в 00:20
источник
  • Функция gsub Awk - это то, что мне нужно для удаления символов непосредственно из awk-скрипта, а не из командной строки, спасибо. –  Pawamoy 20.02.2018 в 15:36