2017-05-10 9 views
-1

入力までのライン:私はすべて変換する必要があり追加nは、前の行にある文字

[5 8 15 79 5 6 . . . . 8 6 4 5 ] 
[18 78 18 79 5 6 . . . 8 6 78 ] 

[5 8 15 79 5 6 
. 
. 
. 
n 8 6 4 5 ] 
[18 78 18 79 5 6 
. 
. 
. 
n 8 6 78 ] 

のように...

所望の出力列を最大で]にして、ファイルの終わりまで続けます。

+0

入力は正確に何ですか、それは配列かファイルの内容ですか、リテラルですか? – herchu

+1

'perl -pe 'chomp if!/] /' test'? – 123

+0

それは配列であると思われますが、私のコードの出力は私がここに示したように結果を返しますので、1行ではなく6列に配列されたデータが得られます。 – Dani

答えて

1

現在の行の末尾が]の場合は、改行のみを印刷したいと思うように聞こえます。試してみてください:

のsedで
awk '{printf "%s%s", $0, match($0,"]\\s*$") ? "\n" : ""}' input 
1

$ sed ':a;N;/\]/!ba;s/\n//g' infile 
[5 8 15 79 5 6 . . . n 8 6 4 5 ] 
[18 78 18 79 5 6 . . . n 8 6 78 ] 

を説明:

:a  # Label to jump to 
N   # Append next line to pattern sapce 
/\]/! ba # If there is no "]", jump to label 
s/\n//g # Remove all newlines (only reached if "]" in pattern space) 

をあなたがいないだけでどこでも、]が行の最後の非空白文字であることを確認するには正規表現は/\]/から/\][[:blank:]]*$/に変更することができ、その結果、

sed ':a;N;/\][[:blank:]]*$/!ba;s/\n//g' infile 
関連する問題