データサンプル:
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,$
。