이 명령을 사용하여 다른 하위 명령을 사용하여 파일에서 여러 열을 인쇄하려고 합니다 awk
.
다음은 연결 명령을 사용하는 동안 오류가 발생하는 명령입니다.awk
awk -F\| '{if(length($1) == 12 && $21 == "SOUTHWEST") print $1 "," substr($2,5,9) "," c == $3$15; print c }' sample.txt | head > test.csv
"c 근처의 구문 오류" 오류가 발생합니다.
Sample.txt에는 다음과 같은 데이터가 포함됩니다.
0011D959A6BC|308-452591505|70605|1|1|TCD2000||LK012|0|||1|0||2581|850|루이지애나주 레이크찰스|308|||남서부|null|루이지애나주 레이크찰스|1|A9200019036CF2B|1|1|0
예상 출력:0011D959A6BC,452591505,706052581
내 스크립트를 연결하는 예로 다음 구문을 사용합니다.
echo '12345|123|6789'| awk -F\| '{c=$1$2; print c}'
답변1
찾은 예에서 c
변수는 쓸모가 없습니다. 문자열(여기서는 필드)을 직접 연결하고 결과를 인쇄할 수 있습니다.
원하는 것을 달성하는 한 가지 방법은 다음과 같습니다.
awk -F\| '{
if(length($1) == 12 && $21 == "SOUTHWEST")
printf("%s , %s, %s\n",$1 ,substr($2,5,9),$3$15)
}' sample.txt | head > text.csv