5

列番号5に0の値を含む行を削除する必要があります.

前:

1QWO     10      5     45    100    7.5
1R0R      6      3     15    100    8.5
1R5M      4      0      6      0    6.5
1R8S      4      0      6      0      6
1R9L      2      1      1    100    6.3
1RG8      6      0     15      0    5.8
1RJU     10      0     45      0    7.2
1RKI     12      6     66    100    4.6

後:

1QWO     10      5     45    100    7.5
1R0R      6      3     15    100    8.5
1R9L      2      1      1    100    6.3
1RKI     12      6     66    100    4.6

どのライナーも非常に役立ちます。

知っている:

sed '/0/d' file_name

ただし、上記のコマンドはすべての列から 0 を削除します。

4

4 に答える 4

11
awk '$5 != 0'

この余分なテキストを追加しない限り、マシンは送信を許可しません。

于 2013-05-01T08:09:30.803 に答える
7

これは間違いなく次の場合により適していawkます。

$ awk '$5!=0' file
1QWO     10      5     45    100    7.5
1R0R      6      3     15    100    8.5
1R9L      2      1      1    100    6.3
1RKI     12      6     66    100    4.6

しかし、本当に解決策が必要なsed場合:

$ sed -r '/\S+\s+{4}0\s+/d' file
1QWO     10      5     45    100    7.5
1R0R      6      3     15    100    8.5
1R9L      2      1      1    100    6.3
1RKI     12      6     66    100    4.6
于 2013-05-01T08:10:17.857 に答える
3

ポータブル sed を使用すると、次のように実行できます。

sed '/\([^ ]\+ \+\)\{4\}0\+ /d'

このようにして、ゼロのチェックを 5 列目に限定します。

$F[4]perl では自動分割を使用できます。暗黙的であるため、条件を指定する必要がないことに注意してください 。

perl -ane 'print if $F[4]'

どちらの場合も出力:

1QWO     10      5     45    100    7.5
1R0R      6      3     15    100    8.5
1R9L      2      1      1    100    6.3
1RKI     12      6     66    100    4.6
于 2013-05-01T08:08:01.590 に答える