1

これに似た質問があります: SEDまたはAWKでファイルから行を削除します

このファイルの3と5で始まり、その間のすべての行を削除するにはどうすればよいですか。

ssadfsadfsdf
asdfsadf
asdfsadf
asdfsadf
asdfsdf
1 z z z lkj klj lkj
2 satan er kaerleikur lkj lkj lkj
3 z z z
4 asdflj asd sdf
5 z z z
6 asdf sdaf asdf
7 z z z lkj lkj lkj
8 sdf safd asdf
9 z z z

答えが明らかに他の場所にある場合は、この質問を削除します。

これが好きに見えたらどうしますか:

asd        ssadfsadfsdf
asd        asdfsadf
asd        asdfsadf
asd        asdfsadf
asd        asdfsdf
asd        1 z z z lkj klj lkj
asd        2 satan er kaerleikur lkj lkj lkj
asd        3 z z z
asd        4 asdflj asd sdf
asd        5 z z z
asd        6 asdf sdaf asdf
asd        7 z z z lkj lkj lkj
asd        8 sdf safd asdf
asd        9 z z z
4

4 に答える 4

4

awk範囲パターンを使用して、パターン1からパターン2までの行一致パターンをスキップできます。

awk '$1 == 3, $1 == 5 { next }; { print }' INFILE

'30'、 '31'などにも一致するため$1、正規表現の代わりにフィールドで数値比較を行います。/^3/

数値が行の2番目のフィールドである場合(編集した入力例のように)、に変更$1$2ます。これがあなたのために働くかどうか私に知らせてください。

于 2011-11-15T11:08:47.563 に答える
3

簡単なグーグルは私にこれを秒の答えとしてくれました:

http://www.cyberciti.biz/faq/sed-howto-remove-lines-paragraphs/

$ sed '/WORD1/,/WORD2/d' input.txt > output.txt

あなたが言ったようにそれが「行の始まり」と一致することを確認するために、あなたは^シンボルでパターンを始めることができます。

Vim(sedが組み込まれている)を使用している場合は、次のrange commandようにすることができます。

:/^3.*/,/^5.*/ d

ここで、dは削除コマンド、および:/exp1/,/exp2/範囲です。

于 2011-11-15T11:00:52.960 に答える
1
awk '/^3/ {del=1}
     (del==0) {print}
     /^5/ {del=0}' FILE
于 2011-11-15T11:01:58.250 に答える
0
awk '$2!~/^[3|5]/' yourFile 

あなたのためにそれをします。

以下のテストを参照してください。

kent$  echo "asd        ssadfsadfsdf
asd        asdfsadf
asd        asdfsadf
asd        asdfsadf
asd        asdfsdf
asd        1 z z z lkj klj lkj
asd        2 satan er kaerleikur lkj lkj lkj
asd        3 z z z
asd        4 asdflj asd sdf
asd        5 z z z
asd        6 asdf sdaf asdf
asd        7 z z z lkj lkj lkj
asd        8 sdf safd asdf
asd        9 z z z"|awk '$2!~/^[3|5]/'

出力:

asd        ssadfsadfsdf
asd        asdfsadf
asd        asdfsadf
asd        asdfsadf
asd        asdfsdf
asd        1 z z z lkj klj lkj
asd        2 satan er kaerleikur lkj lkj lkj
asd        4 asdflj asd sdf
asd        6 asdf sdaf asdf
asd        7 z z z lkj lkj lkj
asd        8 sdf safd asdf
asd        9 z z z
于 2011-11-15T11:55:26.790 に答える