awk 最初のパターン(含む)の後の各行にあるすべてのテキストを印刷します。

awk 最初のパターン(含む)の後の各行にあるすべてのテキストを印刷します。

作業例:

オリジナル:

% echo -e "This is number 800 with decimal;other stuff\n44333; more data"
This is number 800 with decimal;other stuff
44333; more data

欲しいawk結果:

% echo -e "This is number 800 with decimal;other stuff\n44333; more data" | awk
;other stuff
; more data

更新:すべての回答後:区切り記号 ";"は行ごとに1回だけ存在し、行が存在する場合は存在するため、私の解決策は常に機能しますが、他の解決策ほど一般的ではありません(空白行、区切り文字なしの行、または複数の区切り文字がある行)。

ベストアンサー1

すべての Unix システムのすべてのシェルで awk または sed を使用します。

awk '{sub(/[^;]*/,"")}1' file

sed 's/[^;]*//' file

ただし、上記のコードはそれを含まないすべての行に対して空の行を印刷するため、これらの行が入力に存在できる;場合は、次のものが必要になる場合があります。

awk '{sub(/[^;]*;/,";")}1' file

sed 's/[^;]*;/;/' file

上記は、;sを含まない行をそのまま印刷するか、その行を削除したいとします。

awk 'sub(/[^;]*;/,";")' file

sed -n 's/[^;]*;/;/p' file

おすすめ記事