パターン空間から最初の行を削除する移植可能な方法(複数行がある場合)

パターン空間から最初の行を削除する移植可能な方法(複数行がある場合)

パターン空間から最初の行1を
削除する移植可能な方法は何ですか?gnu sed私ができることで

s/[^\n]*\n//

しかし、私が知っている限り、これは(\n[]かっこ式で使用される)移植可能ではありません。


実際の例:ここでは、sed区切り文字を含むファイルの最後の部分が印刷されます。移植可能なコードを通して。区切り文字を除いて移植可能な方法で実行するために、パターン空間から最初の行を削除したいと思います。とてもgnu sed簡単です:

sed 'H;/===/h;$!d;//d;x;s/[^\n]*\n//' infile

1:明らかに、これはコマンドサイクルを再開せずに実行する必要があります...

ベストアンサー1

このような操作を移植可能に実行する1つの方法は次のとおりです。

sed -e '
   # ... assuming prev sed cmds made pattern space carry newline(s)
   y/\n_/_\n/     ;# exchange newlines with an underscore
   s/^[^_]*_//    ;# remove up till the first underscore, ummm newline
   y/\n_/_\n/     ;# revert the transformation
' 

おすすめ記事