Я розумію, що sed
це команда маніпулювати текстовим файлом.
З мого Googling, мабуть, -i
означає, що виконайте операцію над самим файлом, чи правильно це?
Про що '1d'
?
Я розумію, що sed
це команда маніпулювати текстовим файлом.
З мого Googling, мабуть, -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
Перед створенням створює резервну копію оригіналу (as ). За винятком 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 - редактор потоку. Редактор потоків використовується для здійснення основних перетворень тексту у вхідному потоці (файлі або вході з конвеєра). '
як ваше запитання,
sed -i '1d' file_name
означає: видаліть перший рядок у файлі "file_name"
на місці та резервну копію у файл. (так само, як редагувати файл та видаляти перший рядок безпосередньо.)
-i
щоб побачити, що відбувається спочатку, а потім скористатися,-i
щоб фактично змінити файл.