열 명령의 특정 열에 grep을 적용하고 싶습니다.
마이파일.txt
3,ST,ST01,3,3,856
3,ST,ST02,4,9,0234
6,N1,N101,2,3,ST
6,N1,N102,1,60,Comcast
6,N1,N103,1,2,92
내 명령:
column -s, -t < myfile.txt | grep -w "ST"
여기서는 두 번째 열의 ST 패턴을 grep하고 싶습니다. 어떻게 해야 하나요?
예상되는 결과:
3 ST ST01 3 3 856
3 ST ST02 4 9 0234
답변1
awk
쉼표를 계산하기 위해 멋진 정규식을 사용하지 않고 이 문제를 해결하려면 이를 사용하는 것이 가장 좋습니다 .
awk -F, '$2=="ST"'
- 이
-F,
매개변수는 데이터의 쉼표로 설정되는 구분 기호를 지정합니다. $2
일치시키려는 두 번째 열을 나타냅니다."ST"
일치시키려는 값입니다.
답변2
ST
열 2를 입력하세요 (여기에서는 생략 -E
가능 {1}
).
grep -E '^([^,]*,){1}ST[^,]*' file
산출:
3 ST ST01 3 3 856 3 ST ST02 4 9 0234
ST
6열로 이동 :
grep -E '^([^,]*,){5}ST[^,]*' file | column -s, -t
산출:
6 N1 N101 2 3 ST
답변3
을 사용하여 awk
필요한 열을 선택할 수 있습니다 .
column -s, -t < myfile.txt | awk '$2 == "ST"'
쉘 변수를 사용하는 경우,
seg="ST"
column -s, -t < $ST_FILE | awk -v var="$seg" '($2 == var)'