sed N と P 複数行のコマンドオプションが期待どおりに動作しません。

sed N と P 複数行のコマンドオプションが期待どおりに動作しません。

データサンプル:

output=$(cat <<EOF
This is line 1.
This is line 2.
This is line 3.
This is line 4.
This is line 5.
This is line 6.
EOF
)
echo "${output}" > ~/data8.txt

次の2行が同じ結果を返すのはなぜですか?

sed '{
N
3,$P
}' ~/data8.txt

This is line 1. 
This is line 2. 
This is line 3. 
This is line 3. 
This is line 4. 
This is line 5. 
This is line 5. 
This is line 6.


sed '{
N
4,$P
}' ~/data8.txt

上記の行が返されると予想します。

This is line 1.
This is line 2.
This is line 3.
This is line 4.
This is line 4.
This is line 5.
This is line 5.
This is line 6.

しかし、次のように返されます。

This is line 1.
This is line 2.
This is line 3.
This is line 3.
This is line 4.
This is line 5.
This is line 5.
This is line 6.

この奇妙な動作を解決するのに役立ちますか?

ベストアンサー1

3行目を読み取ると、コマンドは4行目を追加するため、Nアドレスが4,$一致しP、コマンドが実行され、バッファの最初の行である3行目が印刷されます。

3,$3行と4行を一緒に読み取るので結果は同じですので、アドレスがあるかどうかは関係ありません4,$

おすすめ記事