구분 기호가 있는 파일이 있고 |
첫 번째 필드와 다른 필드를 인쇄해야 하며 $1
정규식과 일치하는 부분을 인쇄해야 합니다 \[(.*?)\>
.
cat x.txt |nawk -F"|" '{print $1"|"match regex $2,"|" match regex $3}'
어떻게 하나요?
답변1
첫째, 애초에 cat 명령이 필요하지 않습니다. 명령줄 끝에 "<x.txt"를 사용하여 파일 출력을 awk로 리디렉션할 수 있습니다. 더 좋은 점은 awk가 처리할 파일 이름을 인수로 사용할 수 있다는 것입니다. 그래서 나는 당신이 다음과 같은 것을 원한다고 생각합니다 :
awk -F"|" '{
printf "%s", $1;
for (i=2; i<=NF; i++) {
if (match($i, /\[(.*?)>/)) {
printf " %s", substr($i,RSTART,RLENGTH);
}};
printf "\n"
}' x.txt
파일의 각 줄에 대해 첫 번째 필드를 인쇄한 다음 나머지 각 필드(있는 경우)에서 찾은 모든 정규식 일치 항목을 인쇄합니다. 출력 필드는 공백으로 구분됩니다. 이는 두 번째 printf 명령에서 선행 공백을 편집하여 변경할 수 있습니다.