Я понимаю, что sed
это команда для работы с текстовым файлом.
Из моего Google, кажется, -i
означает выполнить операцию над самим файлом, это правильно?
Как насчет '1d'
?
Я понимаю, что sed
это команда для работы с текстовым файлом.
Из моего Google, кажется, -i
означает выполнить операцию над самим файлом, это правильно?
Как насчет '1d'
?
Ответы:
В 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
.
sed '1d' file.txt
Печатает содержимое file.txt
; исключая первую строку; на стандартный вывод.
sed -i '1d' file.txt # GNU, NetBSD, OpenBSD
sed -i '' '1d' file.txt # FreeBSD, macOS
Печатает содержимое file.txt
; исключая первую строку; обратно в file.txt
; переписываю оригинал.
sed -i.back '1d' file.txt
Создает резервную копию оригинала (как file.txt.back
) перед внесением изменений. За исключением FreeBSD sed
, суффикс (здесь .back
) должен быть присоединен к -i
опции (в том же аргументе, без пробела между -i
и .back
).
sed '2d' file.txt
Печатает содержимое file.txt
; исключая вторую строку; на стандартный вывод.
(Указание любого числа приведет к удалению соответствующей строки).
Также совместим с -i
флагом.
sed '1!d' file.txt
Печатает содержимое file.txt
; исключая все кроме первой строки; на стандартный вывод.
(Другими словами, печатается только первая строка).
Также совместим с -i
флагом.
sed '$d' file.txt
Печатает содержимое file.txt
; исключая последнюю строку; на стандартный вывод.
Также совместим с -i
флагом.
В sed -h
иметь:
-i[SUFFIX], --in-place[=SUFFIX]
edit files in place (makes backup if SUFFIX supplied)
и «выполнить операцию над самим файлом». Абсолют это
И man
сказал: «Сед - потоковый редактор. Редактор потока используется для выполнения базовых преобразований текста в потоке ввода (файл или ввод из конвейера). '
как твой вопрос,
sed -i '1d' file_name
означает: удалить первую строку в файле "file_name"
на месте и резервное копирование в файл. (так же, как редактировать файл и удалять первую строку напрямую.)
-i
чтобы сначала увидеть, что происходит, а затем использовать-i
для фактического изменения файла.