Що робить sed -i '1d'?


28

Я розумію, що sedце команда маніпулювати текстовим файлом.

З мого Googling, мабуть, -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Перед створенням створює резервну копію оригіналу (as ). За винятком 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прапором.


FYI: Версія BSD (тобто macOS фактично стандартний) зазвичай не співпрацює, якщо ви не створите резервну копію (2. b) або не використовуєте метод обходу резервного копіювання (2. c). Версія GNU не запропонує вам цього. Це буде руйнівно редагувати та перезаписувати наявні файли без вагань.
голоси

4

У 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"на місці та резервну копію у файл. (так само, як редагувати файл та видаляти перший рядок безпосередньо.)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.