У меня есть 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
эта единственная строка
- заменить табуляцию пробелом
- удалить строку, начинающуюся с пустого текста (или пустую строку)
- замените тире в начале на слово NODIESE
поэтому ваш тестовый файл обрабатывается только один раз, и вы запускаете sed только один раз.