sed -i '1d'は何をしますか?


28

これがsedテキストファイルを操作するコマンドであることを理解しています。

私のグーグルからは-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. a)

sed '1d' file.txt

file.txt; の内容を印刷します。最初の行を除く。標準出力に。


2. a)

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

file.txt; の内容を印刷します。最初の行を除く。に戻るfile.txt; オリジナルを上書きします。


2. b)

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

file.txt.back変更を行う前に、元の(asの)バックアップを作成します。FreeBSDを除いてsed、接尾辞(ここ.back)は-iオプションに添付する必要があります(同じ引数で、との間にスペースは-iありません.back)。


3. a)

sed '2d' file.txt

file.txt; の内容を印刷します。2行目を除く。標準出力に。
(数字を指定すると、対応する行が削除されます)。

-iフラグとも互換性があります。


3. b)

sed '1!d' file.txt

file.txt; の内容を印刷します。すべては除くが、最初の行。標準出力に。
(つまり、最初の行だけが印刷されます)。

-iフラグとも互換性があります。


3. c)

sed '$d' file.txt

file.txt; の内容を印刷します。最後の行を除く。標準出力に。

-iフラグとも互換性があります。


参考: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 -i '1d' file_name

意味:所定の場所にあるファイルの最初の行を削除し、ファイル"file_name"にバックアップします。(ファイルの編集と同様に、最初の行を直接削除します。)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.