n에서 m까지 빈 열이 있는 행을 얻는 방법

n에서 m까지 빈 열이 있는 행을 얻는 방법

다음과 같은 CSV 파일이 있습니다.

aaa,vvv,,,,
bbb,qqq,,,vvv,
ccc,www,iii,,,kkk
ddd,rrr,,,lll,
eee,ttt,ooo,sss,ggg,jjj
fff,yyy,ppp,,,

n~m번째 열이 비어 있는 행을 가져오고 싶습니다. (이 경우: 3~4번째 열이 비어 있는 행을 가져옵니다.)

그런 다음 다음과 같이 출력을 얻으십시오.

bbb,qqq,,,vvv,
ddd,rrr,,,lll,

실제로는 awk를 사용하여 특정 범위 열이 비어 있는 행을 가져오고 싶습니다.

awk -F, '$n-$m=="" {print}' file.csv
awk -F, '$3-$4=="" {print}' file.csv

답변1

일방 통행:

awk -F, -v st=3 -v end=4 '{for(i=st;i<=end;i++){if($i){next;}}}1' file

답변2

@Guru의 솔루션은 awk아마도 이보다 이식성이 더 높지만 grep다음 용도로 사용됩니다.이 특정예:

egrep '^[a-z]*,[a-z]*,{3}[a-z]' csv 
bbb,qqq,,,vvv,
ddd,rrr,,,lll,

csv이 파일은 어디에 있습니까:

cat csv
aaa,vvv,,,,
bbb,qqq,,,vvv,
ccc,www,iii,,,kkk
ddd,rrr,,,lll,
eee,ttt,ooo,sss,ggg,jjj
fff,yyy,ppp,,,

grep --version
grep (BSD grep) 2.5.1-FreeBSD

관련 정보