использование sed в цикле for in для удаления слов из файла

С файлом tar.bz2, чтобы не получилось что-то вроде:

0               0 2019-04-02 17:20 folder name

Я использую -опции tf:

tar -tf file_name.tar.bz2 | head -1 | cut -f1 -d"/"
0
27.03.2020, 00:40
2 ответа

Переменные не раскрываются внутри одинарных кавычек, но раскрываются внутри двойных кавычек. Вы должны пойти на

for word in am pm cm words count etc
do
  sed -i "s/${word}//g" book
done

Обратите внимание, что вы также можете вызвать sedтолько один раз и добиться того же с помощью

sed -i "s/am\|pm\|cm\|words\|count//g" book
3
19.03.2021, 02:32

Если список слов очень длинный, вы можете использовать массив в bashи отформатировать его.

words=(am pm cm words count etc)

fmt=$(IFS='|'; printf '%q' "s/${words[*]}//g")

echo sed -i "$fmt" book
  • Просто добавьте больше элементов в слова массива, если это необходимо.

  • Удалите echo, чтобы sed мог выполнять свою работу.

0
19.03.2021, 02:32

Теги

Похожие вопросы