awk или perl однострочные для печати строки, если второе поле длиннее 7 символов - PullRequest
4 голосов
/ 10 марта 2010

У меня есть файл из 1000 строк, в каждой строке 2 слова, разделенные пробелом. Как я могу напечатать каждую строку, только если длина последнего слова превышает 7 символов? Могу ли я использовать awk RLENGTH? Есть ли простой способ в Perl?

Ответы [ 5 ]

10 голосов
/ 10 марта 2010

@ OP, RLENGTH awk используется при вызове функции match(). Вместо этого используйте функцию length() для проверки длины символов

awk 'length($2)>7' file

если вы используете bash, решение для оболочки

while read -r a b
do
  if [ "${#b}" -gt 7 ];then
    echo $a $b
  fi
done <"file"
9 голосов
/ 10 марта 2010
perl -ane 'print if length($F[1]) > 7'
3 голосов
/ 10 марта 2010

Вы можете сделать:

perl -ne '@a=split/\s+/; print if length($a[1]) > 7' input_file.txt

Используемые опции:

    -n  assume 'while () { ... }' loop around program
    -e  'command'    one line of program (several -e's allowed, omit programfile)

Вы можете использовать опцию авто-разделения, как Крис

    -a  autosplit mode with -n or -p (splits $_ into @F)
2 голосов
/ 10 марта 2010
perl -ane 'length $F[1] > 7 && print' <input_file>
0 голосов
/ 04 октября 2017
perl -lane 'print if (length($F[$#F]) > 7)' fileName

или

perl -pae '$_ = "" if (length($F[$#F]) <= 7)' fileName
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...