paul44
paul44

Reputation: 149

awk or perl one-liner to print line if second field is longer than 7 chars

I have a file of 1000 lines, each line has 2 words, separated by a space. How can I print each line only if the last word length is greater than 7 chars? Can I use awk RLENGTH? is there an easy way in perl?

Upvotes: 4

Views: 2317

Answers (5)

Ken Schumack
Ken Schumack

Reputation: 719

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

or

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

Upvotes: 0

ghostdog74
ghostdog74

Reputation: 342799

@OP, awk's RLENGTH is used when you call match() function. Instead, use the length() function to check for length of characters

awk 'length($2)>7' file

if you are using bash, a shell solution

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

Upvotes: 10

codaddict
codaddict

Reputation: 455340

You can do:

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

Options used:

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

You can use the auto-split option as used by Chris

    -a  autosplit mode with -n or -p (splits $_ into @F)

Upvotes: 3

Eugene Yarmash
Eugene Yarmash

Reputation: 150031

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

Upvotes: 2

C. K. Young
C. K. Young

Reputation: 223143

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

Upvotes: 9

Related Questions