たとえば、次の行を含む「athletes」ファイルがあるとします。
1995-05-30-John-Smith
1992-John-30-Smith-10
フォーマットを#に変更しながら「Smith」で終わる行の最初の2つの単語と最後の単語をリストする方法:
したがって、出力は次のようになります。
1995#05#Smith
ベストアンサー1
次のように使用できますawk
。
awk -F'-' '/Smith$/{print $1"#"$2"#"$NF}' athletes
出力は次のとおりです。
1995#05#Smith
ここで、awkはで終わる行を検索し、Smith
それらの間にある最初、2番目、および最後のフィールドを印刷します#
。
使用sed
sed -En 's/([^-]*)-([^-]*).*Smith$/\1#\2#Smith/gp' file.txt
最初の2つが発生するまで一致し、-
修正後にのみ一致する行を印刷します。