2017-12-08 2 views
1

同じ行のテキストファイルに2つの中括弧が現れるたびに新しい行を挿入したいが、最初の中括弧の後か2番目の中括弧の前にこの新しい行を挿入したい。 sed、grepなどのコマンドを使用してこれを達成する方法はありますか?ここで同じ行の2つの特定の文字の間に新しい行を挿入するにはどうすればよいですか?

は一例です。

前:

こんにちは、あなたは{どのように}ありますか?

私は問題ありません。あなたは以下のとおりです。{

こんにちは、{

方法の後..

}}のおかげ?

私は問題ありません。 }

おかげ{...

(または)

こんにちは、{どのように

}あなたはありますか?

私は問題ありません。 }ありがとうございました

{..

私は、ファイル内の行は、単一の中括弧を持っている場合でも、コマンドが、その追加する新しい行の下に試してみました、私は2つのブラケットがある場合にのみ、新しい行を追加します:

  • のsed -iさん/ {/ & \ n/'filename | grep -n "}"ファイル名| grepの "{"

(又は)

  • SED -i 'S /}/& \ N /' ファイル名| grep -n "}"ファイル名| grepの "{"

答えて

0

てみ

$ sed 's/[{}]/&\n/' ip.txt 
Hello, { 
how} are you? 
I am fine. } 
Thanks{.. 
  • [{}]が一致する文字クラスのいずれかで置換部で{または}
  • &だろう


にマッチしたブラケット 交換する{}の両方がライン

$ cat ip.txt 
Hello, {how} are you? 
fo{o 
I am fine. }Thanks{.. 

$ sed '/{.*}\|}.*{/ s/[{}]/&\n/' ip.txt 
Hello, { 
how} are you? 
fo{o 
I am fine. } 
Thanks{.. 
  • /{.*}\|}.*{/に存在している場合にのみ、}またはその逆
+1

は、そのすべての罰金を働いて、助けを求めて多くのことを-Thanks続い{と一致する表現を修飾されました。 –

+0

私は上記の問題と一緒にいくつかの文字列を除外しようとしていました。行に '{or}'または '{or}'が含まれている場合は、その行をスキップし、その行のどこにでも新しい行を配置しないでください。私は以下のsedコマンドを使用しましたが、期待通りに動作しませんでした。sed -i "/ \({\ '\ | \' {\)/ n;/{。*} \ |}。* {/s/[{}}// \ n/"ファイル名 –

+0

' sed '/ {or}/bを試してみてください。/{/}または '/'と 'b'コマンドが残っているコードをスキップして処理を開始すると、ここで/ {/}または{/}次の行...このような問題が発生したときに新しい質問をしてください...しかし、私は 'sed'を最初に学ぶことをお勧めします。https://stackoverflow.com/tags/sed/info – Sundeep

関連する問題