無駄な情報が削除された巨大なcvsログファイルがあり、内容は次のとおりです。
Working file: unmodifiedfile1.c
================
Working file: modifiedfile1.h
----------------------------------
revision 1.3
Fixed some bug
================
Working file: unmodifiedfile2.h
================
Working file: modifiedfile2.h
----------------------------------
revision 1.1
Added some feature
================
Working file: unmodifiedfile3.h
変更されていないファイルに関連する行を整理したいと思います。
Working file: modifiedfile1.h
----------------------------------
revision 1.3
Fixed some bug
================
Working file: modifiedfile2.h
----------------------------------
revision 1.1
Added some feature
================
似合うパターンは
Working file: FILENAME
================
これまで私ができたことは次のとおりです。
sed '/Working file:/ N ; s/\n/PLACEHOLDER/' changelog.txt |
grep -v 'PLACEHOLDER===' |
sed 's/PLACEHOLDER/\n/
しかし、よりクリーンな解決策があると確信しています。 sedの無知は私をブロックしています...
ポリスチレン
出力は次に終了します。
================
Working file: unmodifiedfile3.h
また許可
ベストアンサー1
sed
これはあなたが求めているものに似ているはずです:
<cvslog sed -n '/Working file/ { N; /\n=\+$/b; :a; N; /\n=\+$/!ba; p; }'
出力:
Working file: modifiedfile1.h
----------------------------------
revision 1.3
Fixed some bug
================
Working file: modifiedfile2.h
----------------------------------
revision 1.1
Added some feature
================
説明する
以下はコメントを含む同じスクリプトですsed
。
/Working file/ {
N # append next line to pattern space
/\n=\+$/b # is it a file separator -> next file
:a
N # append next line to pattern space
/\n=\+$/!ba # isn't it a file separator -> read next line
p # otherwise print accumulated text
}
アッ
awk
ファイル区切り線をレコード区切り線()として使用するように指示すると、RS
合理的な選択基準を定義することが非常に簡単になります。
<cvslog awk 'NF>2' RS='\n=+\n' FS='\n' ORS='\n\n'
出力:
Working file: modifiedfile1.h
----------------------------------
revision 1.3
Fixed some bug
Working file: modifiedfile2.h
----------------------------------
revision 1.1
Added some feature
bashとcoreutils
楽しみとして:
csplit cvslog '/=\{16\}/1' '{*}'
wc -l xx* |
head -n-1 |
while read n f; do
if (( n > 2 )); then
cat $f
fi
done
出力:
Working file: modifiedfile1.h
----------------------------------
revision 1.3
Fixed some bug
================
Working file: modifiedfile2.h
----------------------------------
revision 1.1
Added some feature
================