0

次の形式の行を含む巨大なテキスト ファイルがあります。

var1 val1 var2 val2 var3 val3
.
.
.
var1 val1' var2 val2' var3 val3'
. 
.
.
var1 val1'' var2 val2'' var3 val3''

var3 の値を特定の数値 (たとえば 1000 ) と比較して、テキスト ファイルを最初から val3=1000 の行まで保持し、残りの行 (その特定の行から最後まで) を削除するにはどうすればよいですか? sed、awk、または tail コマンドはありますか?

4

3 に答える 3

1

ファイルがフィールド var3 に従ってソートされ、値が 1000 を超えるまですべての行が必要であると仮定します。

awk '{if(!($5<=1000))exit}1' your_file

ファイルがソートされておらず、var3 が 1000 以下の行が必要な場合:

awk '$5>=1000' your_file
于 2013-09-02T07:38:46.707 に答える
1

は、このタスクをうまく実行できます。デフォルトでは、 は各行を印刷するため、行をパターンと一致させようとし、成功すると終了します。これにより、ファイルの残りの部分が印刷されなくなります。

sed '/var3[ ]\+1000\([ ]\|$\)/ { q }' infile

編集([ ]\|$\):で始まる数字を避けるために、数字の後に追加しました1000

于 2013-09-01T19:31:57.727 に答える
1

Awk ソリューション:

awk '{print} /var3 1000 / {exit}' INPUTFILE
于 2013-09-01T19:34:15.447 に答える