3

連続する重複行を削除したい。すなわち例えば

**test.txt**
car
speed is good
bike 
slower than car
plane
super fast
super fast
bullet train 
super fast

これにより、最初のオカレンスを除くすべての重複行が削除されます。

perl -ne 'print unless $a{$_}++'

しかし、私は出力を

    **test.txt**
    car
    speed is good
    bike 
    slower than car
    plane
    super fast
    bullet train 
    super fast

私はこのワンライナーを試しましたが、これは何もしませんが、入力を出力するだけです。

perl -00 -F'<\w+>|</\w+>' -i.bak -lane 'foreach(@F){if ($_=~/\w+/ && ($a ne $_)){print "$_";$a=$_;}}'

これを行う方法???

4

4 に答える 4

10

なぜあなただ​​けを使用しないのですuniqか?

uniq file.txt

結果:

car
speed is good
bike 
slower than car
plane
super fast
bullet train 
super fast

これは次の方法でも実行できますawk

awk 'line != $0; { line = $0 }' file.txt
于 2012-09-17T03:08:02.870 に答える
5
$ perl -ne 'print $_ unless $_ eq $prev; $prev = $_'
于 2012-09-17T03:04:31.407 に答える
5

試す:

perl -ne 'print unless (defined($prev) && ($_ eq $prev)); $prev=$_'
于 2012-09-17T03:04:40.373 に答える