正規表現の一致前に改行\改行を削除

正規表現の一致前に改行\改行を削除

現在、単純なテキストファイルを解析するためのbashスクリプトを作成しています。今私が経験している問題は、あってはならない新しい行が現れるということです。たとえば、

Q1bcd    3 - 4 ---   ---  ---     Ba     Klasse hat Aufgab..
8 a     3    ---        ---     Mr
6 b      3 - 4 ---   ---  ---     Bu     Unterricht im
Klassenverband
8 a     4    ---        ---     Ke
7 a      4    De   Bi   r24    La

「Klassenverband」文字列が新しい行にあります。私はこれをしたくありません。新しい行文字を削除するには、sedとawkを使用して別のコマンドを実行してみました。

awk '/^\([a-zA-Z]\{4\}\)/{printf "%s ",$0;next} 1' file
sed '/^\([a-zA-Z]\{4\}\)/{N;s/\n//;}' file

今まで私が考えたことは、次の正規表現を使用して必要なすべての文字列を抽出できることです。

^\([a-zA-Z]\{4\}\)

私はこの結果を期待しています

Q1bcd    3 - 4 ---   ---  ---     Ba     Klasse hat Aufgab..
8 a     3    ---        ---     Mr
6 b      3 - 4 ---   ---  ---     Bu     Unterricht im Klassenverband
8 a     4    ---        ---     Ke
7 a      4    De   Bi   r24    La

編集する: これは私にとって効果的です。ただし、テキストファイルはDOSファイルではなくUnixテキストファイルである必要があります。

sed '$!N; s/\n\([[:alpha:]]\{4,\}\)/ \1/; P;D' file

ベストアンサー1

どうですか?

sed '$!N; s/\n\([[:alpha:]]\{4,\}\)/ \1/; P;D' file
Q1bcd    3 - 4 ---   ---  ---     Ba     Klasse hat Aufgab..
8 a     3    ---        ---     Mr
6 b      3 - 4 ---   ---  ---     Bu     Unterricht im Klassenverband
8 a     4    ---        ---     Ke
7 a      4    De   Bi   r24    La

おすすめ記事