2017-03-22 10 views
-4

私は次の出力を持っています。私はプラス記号を持つ行に参加したいと思います。プラス記号のある行の数は異なります。私はsedやawkなどのツールを使ってLinuxでこれを実現したかったのです。結合線マッチング+記号、プラス記号のある行の数が異なります。

---------------------------------- 
lab-test 
0193 + 
8000 + 
0126 + 
---------------------------------- 
prod-test 
0295 + 
13000 + 
0869 + 
0118 + 
---------------------------------- 

---------------------------------- 
lab-test 
0193 + 8000 + 0126 + 
---------------------------------- 
prod-test 
0295 + 13000 + 0869 + 0118 + 
---------------------------------- 
+1

そして、あなたがこれまでに試してみましたか?あなたの[mcve]はどこですか? –

+3

これはコード作成サービスではなく、要件のリストと優先言語の一覧を掲載し、コード猿はそれらを満たすコードを生成します。さらに、このサイトはプログラミング関連の質問用であり、コマンドラインユーティリティの使用に関するアドバイスではありません。最初にこれを行うには努力してください。問題が発生した場合は、発生した問題を説明したり、コードの*関連部分*を含めたり、特定の質問をしたりできます。 –

答えて

2

に変更し、それをから、あなたは+<SPACE>+<whitespace><LF>を交換したいのですが、次の行も+<whitespace><LF>が含まれている場合のみ。

一度に1行ずつ読むと、次の行に含まれる内容を知ることができません。一般的な解決方法は、変更が必要かどうかを知るまで、変更が必要な行のバッファーを保持することです。

perl -ne' 
    $buf =~ s/\+\s*\n/+/if /\+\s*$/; 
    print $buf; 
    $buf = $_; 
    END { print $buf; } 
' 

(コード内の改行がで左またはあなたの裁量で削除することができます。)

使用法:Specifying file to process to Perl one-liner

+0

私は通常、「コード作成サービスではありません」キャンプですが、これは素晴らしいPerlです。 – stevieb

+0

私は思うのですが、 'END {...}'を '} {...'に置き換えることで短縮することができます。 – stevieb

+0

@stevieb、それは通常のスライディングウィンドウのアプローチです。 – ikegami

関連する問題