%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
잘라내기 명령을 사용하여 행에서 필드를 선택하는 방법을 알고 있습니다. 예를 들어, 다음 데이터가 제공됩니다.
a,b,c,d,e
f,g,h,i,j
k,l,m,n,o
이 명령은 다음과 같습니다.
cut -d, -f2 # returns the second field of the input line
반품:
b
g
l
내 질문: 두 번째 필드를 선택하는 방법계산끝부터? 이전 예에서 결과는 다음과 같습니다.
d
i
n
답변1
cut
반전 전후에 입력을 사용하십시오 rev
.
<infile rev | cut -d, -f2 | rev
산출:
d
i
n
답변2
이 시도앗:
awk -F, '{print $(NF-1)}' file.txt
또는 사용진주:
perl -F, -lane 'print $F[-2]' file.txt
또는 사용루비(작업을 해주신 Manat에게 감사드립니다):
ruby -F, -lane 'print $F[-2]' file.txt
또는 다음을 사용하십시오 bash
(manatwork 덕분에):
while IFS=, read -ra d; do echo "${d[-2]}"; done < file.txt
또는 사용파이썬:
cat file.txt |
python -c $'import sys\nfor line in sys.stdin:\tprint(line.split(",")[-2])'
답변3
sed를 사용하세요:
sed -E 's/^([^,]*,)*([^,]*)(,[^,]*){1}$/\2/' infile
산출:
d
i
n
설명하다
([^,]*,)*
쉼표가 뒤에 오는 쉼표가 아닌 문자의 개수에 관계없이 일치합니다. 즉, 열 개수에 관계없이 일치합니다.([^,]*)
열을 일치시킵니다.(,[^,]*){1}
끝의 세 번째 열과 일치{1}
하도록 수량자를 변경하는 경우 끝에 있는 하나의 열과 일치합니다 .{2}