Удалить строку, если она содержит более 3 пробелов - PullRequest
1 голос
/ 19 июля 2011

У меня есть текстовый файл в форме

sadsadsad sadsadsadd sadasdsadad

некоторые строки содержат пробел в середине второго столбца, например

sadsadsad sads adsadd sadasdsadad

Могу ли я использовать awk для просмотра файла и удаления строки, если в конкретной строке более 2 пробелов?

Ответы [ 2 ]

3 голосов
/ 19 июля 2011

Вам не нужно awk для этого, простой sed сделает:

sed -e '/ .* .* /d'

Если вы хотите awk конкретно, вы можете сделать что-то вроде этого:

!/ .* .* / {
    print;
}

Вы также можете настроить регулярное выражение, чтобы быть более точным, возможно, используя в обоих случаях / [^ ]+ [^ ]+ /. Или даже, как предлагает jkerian в другом ответе, просто используйте NF.

1 голос
/ 19 июля 2011

Возможно, вы можете создать регулярное выражение, чтобы сделать это с совпадением регулярного выражения с помощью sed или awk ... но это работает

awk '{if ($4 == "") print}' input_file

Другой альтернативой является использование переменной NF

awk '{if (NF < 4) print}' input_file
...