次のファイルがあります。
click
css_add_violation_false
click
css_add_claim_false
そして
select
css_driver1_birth_date_month
birth_date_month
select
css_driver1_birth_date_day
birth_date_day
click[newline]値をclick(値)に置き換える方法は?
または、[改行]値[改行]値をクリックしてから(値、値)をクリックします。
sed
複数行の内容に合わないので理解できません。
私は次のようにしてtr
キャリッジリターンを削除しようとしました。
tr 'select\n' 'select('
しかし、これはすべてのキャリッジリターンを削除し、多くを追加します。(
(注:OSX)
希望の出力:
click(css_add_violation_false)
click(css_add_claim_false)
そして
select(css_driver1_birth_date_month, birth_date_month)
select(css_driver1_birth_date_day, birth_date_day
空行が表示されるまで複数の引数を処理できる場合は、これがより一般的な答えになります。
ベストアンサー1
そしてawk
:
awk '{if($0=="click"){getline n;printf "%s(%s)\n", $0, n}else{print}}' file
行が一致すると、click
次の行が名前付き変数にロードされ、n
目的の出力形式が印刷されます。
編集する:
可変数の行があり、空行が発生するまでそれらを結合するには、次のコマンドを使用します。
awk '{if($0=="click"){getline n; printf "%s(%s", $0, n;
while($0!=""){printf ",%s", $0; getline};
printf ")\n\n", x}else{print}}' file
空の行が見つかるまでカンマで区切られた行を印刷します。