Как добавить текст и пустую строку в начале каждого файла в данном каталоге?

Как добавить новую строку в начале каждого файла в / home / johnny, содержащего текст «Hello», за которым следует пустая строка? Кроме того, я должен удалить все бесполезные пробелы или табуляции в конце каждой строки (если строка содержит только пробелы или табуляции, они будут удалены, но строка должна быть сохранена).

0
задан 13 November 2011 в 00:28

1 ответ

Попробуйте следующее (запустился в /home/johnny/):

for f in * ; do awk 'BEGIN {print "Hello\n";} {gsub("([ \t]+)$", ""); print $0; }' "$f" >"$f.2"; done

Это создает .2 файлы в том же каталоге. Эти файлы содержат модификации.

for оператор перечисляет все файлы в каталоге. Если требуется обработать только текстовые файлы, Вы могли бы использовать *.txt вместо *.

awk выполняет 2 задачи:

  1. Предварительно ожидает каждый файл с "Привет" и пустая строка.
  2. Удаляет пробелы и символы табуляции от конца каждой строки.

Результаты отображены на стандартном выводе.

Наконец простое перенаправление создает .2 файлы от обработанного стандартного вывода.

Это работает над файлами с пробелами на их имена, потому что $f заключается в кавычки.

Если Вы не хотите сохранять исходные файлы, измените команду следующим образом:

for f in * ; do awk 'BEGIN {print "Hello\n";} {gsub("([ \t]+)$", ""); print $0; }' "$f" >"$f.2"; mv "$f.2" "$f"; done

Основное дополнение является командой перемещения, которая заменяет исходные файлы измененной версией.

0
ответ дан 13 November 2011 в 00:28

Другие вопросы по тегам:

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