如果第二个字段超过7个字符,请使用awk或perl单行打印行

时间:2010-03-10 11:45:27

标签: perl awk

我有一个1000行的文件,每行有2个单词,用空格分隔。只有当最后一个字长超过7个字符时,如何打印每一行?我可以使用awk RLENGTH吗? perl有一个简单的方法吗?

5 个答案:

答案 0 :(得分:10)

@OP,当你调用match()函数时,会使用awk的RLENGTH。相反,使用length()函数检查字符长度

awk 'length($2)>7' file

如果您使用的是bash,那么shell解决方案

while read -r a b
do
  if [ "${#b}" -gt 7 ];then
    echo $a $b
  fi
done <"file"

答案 1 :(得分:9)

perl -ane 'print if length($F[1]) > 7'

答案 2 :(得分:3)

你可以这样做:

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)

您可以使用Chris

使用的自动拆分选项
    -a  autosplit mode with -n or -p (splits $_ into @F)

答案 3 :(得分:2)

perl -ane 'length $F[1] > 7 && print' <input_file>

答案 4 :(得分:0)

perl -lane 'print if (length($F[$#F]) > 7)' fileName

perl -pae '$_ = "" if (length($F[$#F]) <= 7)' fileName