Использование нескольких команд sed для работы с текстом

Использование нескольких команд sed для работы с текстом

У меня есть bash-файл, в который я хотел бы внести несколько изменений.

sed -i 's/      /    /g' testfile
sed -i -e 's/#[a-z]$//' -e '/^$/d' testfile
sed -i 's/ *$//' testfile
sed '/##=/ r header' testfile

В первой команде хотелось бы заменить TAB на пробелы, а затем удалить комментарии (есть также комментарии, которые начинаются с ##) и пустые строки. После этого хотелось бы вставить файл после указанного шаблона в моем файле. Что-то не так с порядком команд?

решение1

Вы можете задать несколько инструкций в одном вызове sed, например:

sed 's/\t/    /g;/^ *$/d;s/^#/NODIESE/' testfile

эта единственная строка

  1. заменить табуляцию пробелом
  2. удалить строку, начинающуюся с пустого текста (или пустую строку)
  3. замените тире в начале на слово NODIESE

поэтому ваш тестовый файл обрабатывается только один раз, и вы запускаете sed только один раз.

Связанный контент