sedの〜の解釈


9

私は最近、sedを学んでいます。何よりも私を混乱させるこのチルダ「〜」があります。

たとえば、コマンド

sed -n '1~2 w output.txt' input.txt

奇数番号の行を出力しています(ファイルoutput.txtに)。

同じチュートリアルでは、1から2までの行をスキップし、次に使用する場合に備えて、行番号2の次の行の印刷を開始することも指定されています

sed -n '1~2 p' input.txt

このチルダの絶対的な解釈は何ですか?


正確には、チュートリアルは2番目の例について何を言っていますか?「行を1から2にスキップ」は、そのコマンドが何をするのかを正確に説明したものではありません。
JigglyNaga

回答:


13

これはGNU sed拡張です:

first~step

steplineで始まるすべての行に一致しますfirst。たとえばsed -n 1~2p、入力ストリームのすべての奇数行を出力し、アドレス2~5は2行目から5行ごとに一致します。 firstゼロにすることができます。この場合、sedと等しいかのように 動作しstepます。(これは拡張機能です。)

2つの例は同じ行に一致しますが、最初の例ではwそれらをファイルに書き込み()、2番目の例でpは標準出力の出力先に出力()しています。

通常は、必ずコマンドのマニュアルを参照してください。マニュアルがあいまいになることはめったにありません。機能のいくつかの側面を組み合わせてコマンドを適用することは、チュートリアルで説明するのが難しい場合があります(また、チュートリアルは、同じステートメントをさまざまな方法で言い換えることにより、物事をよりわかりやすくしようとするため、混乱を招く可能性があります)。マニュアルは、集約されたコマンドが行うことの各ビットの明確なリファレンスです。

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