ファイルを読みやすくする1行のコマンドを探しています。グループに属していない限り、すべての;
文字をに変更したいと思います。これはファイアウォールにあるので、bashなどのみ使用できます。newline
()
入力例:
ProductName: Threat Emulation; product_family: Threat; Destination: (countryname: United States; IP: 127.0.0.1; repetitions: 1) ; FileName: (file_name: myfile) ;
予想出力:
ProductName: Threat Emulation
product_family: Threat
Destination: (countryname: United States; IP: 127.0.0.1; repetitions: 1)
FileName: (file_name: myfile)
ベストアンサー1
sedの正規表現は少し混乱しますが、うまくいきます。
sed '
:a #mark return point
s/\(\(^\|)\)[^(]\+\);\s*\([^)]\+\((\|$\)\)/\1\n\3/ #remove ; between ) and (
ta #repeat if substitute success
s/[[:blank:];]\+$// #remove ; with spaces at end
'
Breif正規表現の説明:
^\|)
線で始まる)
[^(]\+
以外のすべての記号(
;\s*
空白ができるセミコロン(\|$
行が終わるまで、または(