私はこれがsed
テキストファイルを操作するコマンドであることを知っています。
私のインターネット検索によると、これは-i
ファイル自体に対して作業を行うことを意味するようです。これは正しいですか?
何について'1d'
?
答え1
存在する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
。
答え2
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
変更する前に、元のファイルのバックアップを作成してください(例: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
。
答え3
そこに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"
であり、ファイルにバックアップされます。 (ファイルを編集して最初の行を直接削除するのと同じです。)