Как я удаляю первую строку в файле?

Я не могу искать конкретную строку, так как они все очень похожи, но я хотел бы, чтобы что-то простое прервало первые 4 строки в файле.

Они - вся переменная длина также. У меня было думание о жемчуге, и все это кажется более твердым, чем я думал, но я хотел бы сделать это в Perl, AWK или команде оболочки, если это возможно.

У кого-либо есть простой способ сделать это?

8
задан Sam 1 September 2014 в 14:49
поделиться

10 ответов

sed - самый простой. Чтобы удалить первую строку файла, выполните:

sed '1d' file.txt

Или, чтобы удалить первые четыре строки, выполните:

sed '1,4d' file.txt
6
ответ дан 5 December 2019 в 05:08
поделиться
sed -i '1,4d' <filename>

удалит первые четыре строки входного файла. (Если вы хотите удалить только первую строку, вы можете вместо этого использовать '1d' .)

Флаг -i означает редактирование на месте, что означает, что ввод файл также является выходным файлом, и, таким образом, изменения записываются обратно в исходный файл. Если вы предпочитаете, чтобы файл оставался нетронутым, а измененное содержимое просто записывалось в стандартный вывод, просто опустите -i .

Этот и многие другие sed 1-строчки можно найти в удобной ссылке здесь:

http://sed.sourceforge.net/sed1line.txt

4
ответ дан 5 December 2019 в 05:08
поделиться

пропустить первые 4 строки

$ awk 'NR>4' file >temp;mv temp file

$ more +5 file >temp;mv temp file

$ perl -i.bak -ne '$.>=4 && print' file
5
ответ дан 5 December 2019 в 05:08
поделиться

Попробуйте следующее: sed -i 1d file

Общее правило:

Чтобы удалить n первые строки: sed '1, nd' file.txt
Например: sed '1,4d' file.txt для удаления первых 4 строк

1
ответ дан 5 December 2019 в 05:08
поделиться
tail -n +5 file > temp
mv temp file
2
ответ дан 5 December 2019 в 05:08
поделиться

Решение, которое не требует языка сценариев (например, awk, sed, perl и т. Д.):

tail -n `expr \`cat FILE | wc -l\` - 1` FILE > FILE.new; mv FILE.new FILE

Идея состоит в том, чтобы подсчитать количество строк в файле, затем вычесть единицу, а затем передать результат в «хвост» команда.

1
ответ дан 5 December 2019 в 05:08
поделиться
perl -pe'1..4and$_=""'

как эквивалент

sed 1,4d

или

perl -ne'1..4or print'

как эквивалент

sed -n '1,4!p'

. Вы можете использовать -i так же, как в sed .

2
ответ дан 5 December 2019 в 05:08
поделиться
tail -n+2 filename

Пропускает первую строку в filename и выводит ее на стандартный вывод. Параметр -n + 2 означает вывод строк, начинающихся со второй строки.

Конечно, вы можете заменить 2 любым числом, которое вам нужно (в вашем заголовке и фактическом содержании вопроса указано первое и пятое соответственно).

13
ответ дан 5 December 2019 в 05:08
поделиться

Найдите в файле четвертый «\ r \ n» или «\ n» и подстроку из этого индекса.

-1
ответ дан 5 December 2019 в 05:08
поделиться

Используйте File :: Tie. Это прекрасно.

1
ответ дан 5 December 2019 в 05:08
поделиться
Другие вопросы по тегам:

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