質問: 2つの異なる区切り文字でのcut / awk / sedの使用 次のような場合があります。 case@test.com case_1_2@test.com case_1@test.com 私はこれらをに変換しようとしています case@test.com case@test.com case@test.com したがって、最初の '_'(それを含む)から@(それを含まない)までのすべてを削除する必要があります。私は何かを持っていますが、それは実際には正しく機能しません:このスレッドに基づいて: 一度に2つの区切り文字に基づいてカット 、およびこのu&l q&a: 区切り文字の最初の出現によって文字列を分割 。sed 's/^.*_\([^ ]*\) .*\@\([^$]*\)$/\1 \2/' infile しかし、運はありません。チャイムを鳴らしたい人はいますか?
回答: ここに別のgawk方法があります:gawk -f_ '{if(nf>1){print $1$nf} else {print $nf}}' _をフィールド区切り文字として使用して、gawkに、複数のフィールドがある場合は最初と最後のフィールドを出力し、単一のフィールドしかない場合は最後のフィールドを出力するように指示します。