다음과 같은 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