다음과 같은 기록이 포함된 txt 파일이 있습니다.
cat,bdb awq,sdcsidsjo hhhd
xs,dun,hat ase, xsdfc
xd,yu,nor acc,cuiov dfvgf
아래 단어(공백 다음 두 번째 열)만 출력하고 싶습니다.
awq
ase
acc
awk '{print $2}'
와 awk 'BEGIN {print $2} { FS="," }'
같은 명령을 시도했지만 아무것도 작동하지 않았습니다. 누구든지 얻는 방법을 알 수 있습니까?awk '{print $2 FS=","}'
awk 'BEGIN{ORS=",";} {print $2}'
첫 번째 열의 질문을 편집했습니다. awk 'BEGIN { FS="," } {print $2}' 를 사용하면 쉼표가 있습니다.
내가 얻은 결과는 bdb dun yu
하지만 결과가 awq ase acc로 표시되기를 원합니다.
누구든지 결과를 얻는 방법을 알 수 있습니까?
답변1
(새로운 질문으로 업데이트됨)
다음 쉼표까지 공백 뒤의 첫 번째 단어를 추출하려는 것 같습니다.
$ awk -F ' ' '{ split($2,a,","); print a[1] }' <file
awq
ase
acc
이는 데이터를 공백으로 구분된 것으로 처리한 다음 공백으로 구분된 두 번째 필드를 가져와 명시적으로 쉼표로 분할하고 해당 결과의 첫 번째 결과 문자열을 인쇄합니다.
또는 다음을 사용하십시오 sed
.
$ sed 's/^[^ ]* //; s/,.*$//' <file
awq
ase
acc
이는 두 개의 대체를 사용하여 먼저 첫 번째 공백 앞의 비트를 제거한 다음 쉼표 내의 비트를 제거합니다. 나머지 문자열을 인쇄합니다.
답변2
Command: for i in `echo "cbdb awq,sdcsidsjo hhhd xsdunh ase, xsdfc xdyun acc,cuiov dfvgf" | awk -F "," '{print $1,$2,$3}'`; do echo $i | awk '/^a/{print $0}'; done|tr "\n" " "
입력하다
cbdb awq,sdcsidsjo hhhd xsdunh ase, xsdfc xdyun acc,cuiov dfvgf
산출
주문하다
for i in `echo "cbdb awq,sdcsidsjo hhhd xsdunh ase, xsdfc xdyun acc,cuiov dfvgf" | awk -F "," '{print $1,$2,$3}'`; do echo $i | awk '/^a/{print $0}'; done|tr "\n" " "
산출
awq ase acc