arnpry
arnpry

Reputation: 1141

Return Values in Column Less Than or Equal to 4 Characters

I have a csv file with some data in it. I need to search the values in the second column for any strings less than or equal to 4 characters in length and then return the matching line.

some.csv File:

MA,BEVM3,BEVERLY,52,31
VT,EXJV1,ESSEX JUNCTION N,49,29
ME,FISM1,FT KENT,41,20
MA,OXFM3,BUFFUMVILLE LAKE,52,30
MA,TLLM3,TULLY LAKE,52,28
NH,MNCN3,MASSABESIC LAKE,52,31
ME,GREM1,SEBEC LAKE,45,23
ME,CLTM1,CLAYTON LAKE,42,19
ME,GRAM1,GRAND LAKE STREAM,46,27
VT,SLNV1,SOUTH LINCOLN,45,26
NH,MCDN3,EDWARD MACDOWELL LAKE,49,30
MA,BOS,BOSTON,51,37
MA,BROM3,BROCKTON,53,32
MA,CHH,CHATHAM,47,36
MA,ORH,WORCESTER,50,33
ME,KGYX,GRAY,48,30
MA,AQW,N ADAMS HARRIMAN AP,52,30
MA,KTAN,TAUNTON MUNI AP,54,32
MA,KPYM,PLYMOUTH MUNI AP,51,32

Code:

awk -F',' '$2<=4' some.csv

This is not returning what I'm expecting... Is there a better way to perform this task?

Upvotes: 0

Views: 76

Answers (4)

RomanPerekhrest
RomanPerekhrest

Reputation: 92854

Alternative approach using sed tool:

sed -n '/^[^,]*,[^,]\{1,4\},/p' some.csv

The output:

MA,BOS,BOSTON,51,37
MA,CHH,CHATHAM,47,36
MA,ORH,WORCESTER,50,33
ME,KGYX,GRAY,48,30
MA,AQW,N ADAMS HARRIMAN AP,52,30
MA,KTAN,TAUNTON MUNI AP,54,32
MA,KPYM,PLYMOUTH MUNI AP,51,32

The same can be achieved using grep tool:

grep '^[^,]*,[^,]\{1,4\},' some.csv

Upvotes: 0

Mausam Sinha
Mausam Sinha

Reputation: 153

You can use bash if you need. Using a loop and an if codition like:

#!/bin/bash

filename="/root/some.csv"

while read -r line
do
value=`echo $line | awk -F ',' '{print $2}' | wc -c`
value=$((value - 1))
if [ $value  -lt 5 ]
then
echo $line
fi
done < "$filename"

Upvotes: 0

Prateek
Prateek

Reputation: 179

Please use the regular Expression.

/[A-Za-z0-9]{1,4}/g

Upvotes: 1

VIPIN KUMAR
VIPIN KUMAR

Reputation: 3147

try this -

awk -F, '{if(length($2) <= 4) print $0}' f
MA,BOS,BOSTON,51,37
MA,CHH,CHATHAM,47,36
MA,ORH,WORCESTER,50,33
ME,KGYX,GRAY,48,30
MA,AQW,N ADAMS HARRIMAN AP,52,30
MA,KTAN,TAUNTON MUNI AP,54,32
MA,KPYM,PLYMOUTH MUNI AP,51,32

Upvotes: 2

Related Questions