以下のクリケットレビューがあります。
0.3
Richardson to RG Sharma, 2 runs, gentle, non-swinging length ball on off, Rohit seeks to pick it up. Hit high on the bat and spooned over the returning Mitch Marsh at midwicket
0.4
Richardson to RG Sharma, 1 run, banged in short, controlled pull to long leg
私がやりたいことは、n.n
改行を空白に変更する次の行にリンクすることです。その後、2番目のカンマから各行の終わりまですべての内容を削除したいので、上記の入力の出力は次のようになります。
0.3 Richardson to RG Sharma, 2 runs
0.4 Richardson to RG Sharma, 1 run
- 編集 - 改行文字を一致させるために[0-9] "\ n" [AZ]を使用しましたが、一致する正確な数字と文字を再現することはできません。また、2つのカンマ以降のすべての内容を削除するためにパラメータを拡張しようとしましたが、1つのカンマ以降にのみ削除できます。
答え1
あなたはそれを使用することができますsed
:
sed -ne '/^[0-9][0-9]*\.[0-6]/ { N; s/\n/ /; s/^\([^,]*,[^,]*\),.*$/\1/; p; }' < data
要求しない限り、名前付きファイルを処理しますdata
(-n
)引用符で囲まれたsedプログラムを実行します。
プログラムは、.
1つ以上の数字aと数字0〜6で始まる行を選択し、その行のコンポーネントを実行します{}
。これN
注文するまた、間に改行文字を入れて次の行を読んでみてください。最初はs///
改行文字を空白に置き換えます。
2 番目は新しい単一行を 2 番目のコンマまで一致させ、行全体を 1 番目の部分に置き換えます。非カンマ文字で構成される文字列、コンマ、その他の非カンマ文字で構成された文字列、およびその後にカンマと行末のテキストを含むグループを\(
キャプチャします。\)
.*
$
決勝p
印刷結果ラインを出力します。他のすべての入力ラインは無視されます。
答え2
AWKの代替ソリューション:
awk -v FS="," '/^[0-9]/{line=$0;getline; line=line" "$1", "$2 ;print line}' file