
以下のように、一致するすべてのファイルを見つけるためにディレクトリで再帰的なgrepを実行しました。
grep -ER "match_string1|match_string2" /path/to/dir/
私が得た結果は次のとおりです。
/path/to/dir/timestamp.log:match_string1
/path/to/dir/timestamp.log:match_string2
/path/to/dir/timestamp.log:match_string2
ここでmatch_string1はモデル#を表します。ここで match_string2 はテスト結果を表します。
モデル番号とテスト結果が特定の基準に一致するときに計算できるように、この行をマージしたいと思います。
注:match_string2とmatch_string1の2つを同じ行に配置できます。
予想される出力の例:
/path/to/dir/timestamp.log:match_string1; /path/to/dir/timestamp.log:match_string2; /path/to/dir/timestamp.log:match_string2
ご協力ありがとうございます
答え1
sed '/match_string1/{
:1
N
/\n.*match_string2/s/\n/; /
t1
P
D
}'
スクリプトが行を見つけたら、match_string1
パターンに次の行を追加し、追加された行があることを確認します。match_string2
その場合は、n
ewline 記号を置き換え;
て確認する次の行を追加します。そうでない場合match_string2
(置換が発生していない場合)、スクリプトは最初の行を印刷し、2行目から処理を開始します。