Что делает sed -i '1d'?


28

Я понимаю, что sedэто команда для работы с текстовым файлом.

Из моего Google, кажется, -iозначает выполнить операцию над самим файлом, это правильно?

Как насчет '1d'?

Ответы:


43

В sed:

  • -i опция будет редактировать входной файл на месте

  • '1d' удалит первую строку входного файла

Пример:

% cat file.txt 
foo
bar

% sed -i '1d' file.txt 

% cat file.txt        
bar

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

Например, если вы делаете:

sed -i.orig '1d' file.txt 

исходный файл будет сохранен как file.txt.origи измененный файл будет file.txt.


4
Вы также можете выполнить «пробный запуск» без, -iчтобы сначала увидеть, что происходит, а затем использовать -iдля фактического изменения файла.
Баард Копперуд

15

1. а)

sed '1d' file.txt

Печатает содержимое file.txt; исключая первую строку; на стандартный вывод.


2. а)

sed -i    '1d' file.txt # GNU, NetBSD, OpenBSD
sed -i '' '1d' file.txt # FreeBSD, macOS

Печатает содержимое file.txt; исключая первую строку; обратно в file.txt; переписываю оригинал.


2. б)

sed -i.back '1d' file.txt

Создает резервную копию оригинала (как file.txt.back) перед внесением изменений. За исключением FreeBSD sed, суффикс (здесь .back) должен быть присоединен к -iопции (в том же аргументе, без пробела между -iи .back).


3. а)

sed '2d' file.txt

Печатает содержимое file.txt; исключая вторую строку; на стандартный вывод.
(Указание любого числа приведет к удалению соответствующей строки).

Также совместим с -iфлагом.


3. б)

sed '1!d' file.txt

Печатает содержимое file.txt; исключая все кроме первой строки; на стандартный вывод.
(Другими словами, печатается только первая строка).

Также совместим с -iфлагом.


3. в)

sed '$d' file.txt

Печатает содержимое file.txt; исключая последнюю строку; на стандартный вывод.

Также совместим с -iфлагом.


К сведению: версия BSD (то есть стандарт MacOS de facto) обычно не будет взаимодействовать, если вы не создадите резервную копию (2. b) или не используете метод обхода резервной копии (2. c). Версия GNU не предложит вам этого. Он будет разрушительно редактировать и перезаписывать существующие файлы без колебаний.
голоса

4

В sed -hиметь:

  -i[SUFFIX], --in-place[=SUFFIX]
             edit files in place (makes backup if SUFFIX supplied)

и «выполнить операцию над самим файлом». Абсолют это

И manсказал: «Сед - потоковый редактор. Редактор потока используется для выполнения базовых преобразований текста в потоке ввода (файл или ввод из конвейера). '

как твой вопрос,

sed -i '1d' file_name

означает: удалить первую строку в файле "file_name"на месте и резервное копирование в файл. (так же, как редактировать файл и удалять первую строку напрямую.)

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.