1

次のようなファイルがあります。

Country:  USA
Currency: Dollars
Country:  Canada
Currency: Canadian
          Dollars
Country:  Australia
Currency: Australian
          Dollars
Country:  France
Currency: Euro

2 つの行を結合して、次のように出力を取得する必要があります。

Country:  USA
Currency: Dollars
Country:  Canada
Currency: Canadian Dollars
Country:  Australia
Currency: Australian Dollars
Country:  France
Currency: Euro

改行をスペースに置き換えて使用しようとしtrましたが、うまくいきませんでした。誰かがこれを手伝ってくれますか。

ありがとう。

4

1 に答える 1

1
sed ':r;$!{N;br};s/\n[[:space:]]*\([[:alpha:]]\+\n\)/ \1/g' filename

例:

$ echo 'Country:  USA
> Currency: Dollars
> Country:  Canada
> Currency: Canadian
>           Dollars
> Country:  Australia
> Currency: Australian
>           Dollars
> Country:  France
> Currency: Euro' | sed ':r;$!{N;br};s/\n[[:space:]]*\([[:alpha:]]\+\n\)/ \1/g'
Country:  USA
Currency: Dollars
Country:  Canada
Currency: Canadian Dollars
Country:  Australia
Currency: Australian Dollars
Country:  France
Currency: Euro

説明:r;$!{N;br};すべてのファイルをパターン スペースに読み込みます。次に、いくつかのスペースの後にいくつかの文字が続くように見えるすべての行が検索され、先行する改行と余分なスペースが削除されます。詳細については、このsedリファレンスを参照してください。

于 2012-08-07T09:41:43.700 に答える