Как удалить строки из нескольких текстовых файлов одновременно в командной строке?

Я пытался удалить вторую и третью строки из примерно 50 текстовых файлов.

Мне нужно сохранить заголовки, но удалить строки «1» и «2», то есть мне нужно удалить вторую и третью строки каждого текстового файла. Я пытался использовать:

sed -i.bak '2,3d' * .txt

Но только удаляет строки из первого файла в папке. Как я могу применить это ко всем файлам в папке?

0
задан 13 August 2019 в 20:00

1 ответ

Вот два пути, выбор зависит от того, сколько файлов Вы имеете, какой длины имена, и имеют ли имена файлов "забавные символы.

for i in *.txt ; do
    sed -i.bak '2,3d' "$i"
done

Или, сложный случай:

find . -maxdepth 1 -type f -name '*.txt' -print0 | \
    xargs -0 -r -n 1 sed -i.bak '2,3d'
0
ответ дан 23 October 2019 в 06:01

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

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