0

sed マッチのに行の改行を削除する方法を探しています。たとえば、「[」のインスタンスの前にある改行を削除したいと思います。

サンプル入力:

MESSAGE: Location
latitude
[-Pi/4,Pi/4]
longitude
[-Pi,Pi]
altitude
[10000,120000]

出力例:

MESSAGE: Location
latitude [-Pi/4,Pi/4]
longitude [-Pi,Pi]
altitude [10000,120000]

sed、tr、または awk を使用した提案をいただければ幸いです。ありがとう。

4

5 に答える 5

1

簡単に検索すると、この投稿https://stackoverflow.com/a/1252191/722238に結果が返されます。

あなたの問題でその投稿の解決策を使用すると、答えは次のとおりです。

sed ':a;N;$!ba;s/\n\[/ [/g' yourinput.txt

于 2012-12-24T02:41:22.780 に答える
1

Perl を使用できます。

use warnings;
use strict; 

my $p; 

while (<>) {
  if (/^\[/) {
    chomp $p; 
    print "$p $_";
    undef $p;
  } else {
    print $p if defined $p; 
    $p = $_; 
  }
}

またはコマンドラインから:

perl -lane ' if (/\[/) { print "$p $_"; undef $p} else { print $p if defined $p; $p = $_; }' input
于 2012-12-24T03:01:14.200 に答える
0
#!/usr/bin/awk -f
BEGIN {
  RS = ""
}
{
  gsub(/\n\[/, " [")
}
1
于 2014-06-04T05:25:32.500 に答える
0

awk の使用:

awk 'NR == 1 {previous = $0}
     NR > 1 && $0 ~  "^[[]" {previous = previous $0}
     NR > 1 && $0 !~ "^[[]" {print previous; previous = $0}
     END{print previous}' your_file.txt
于 2012-12-24T17:11:54.043 に答える