#
은 awk 주석 시작 문자입니다. 게시 된 .awk 파일의 모든 행은 주석 처리되어 출력되지 않습니다. 또한 RS="[</EmployeeData>]"
은 RS를 문자열 </EmployeeData>
으로 설정하지 않으므로 원하는 것으로 생각하면 []
문자 목록 구분 문자 </E m p l o y e D a t
의 목록에있는 문자 중 하나로 설정합니다.
가 나는 이것이 당신이 정말로 무엇을 찾고 아마 생각 (GNU AWK는 멀티 문자의 RS에 사용) :
$ cat file
01 |
0101001001 |
DD-01-001-001-001/57 |
1 |
Vijay Raghavan |
|
3096 |
Govind Industries |
|
|
</EmployeeData>
02 |
0202002002 |
DD-01-001-001-001/57 |
1 |
Bob Shmobswort |
|
1234 |
Some Other Places |
|
|
</EmployeeData>
.
$ cat tst.awk
BEGIN{FS="[[:space:]]*[|][[:space:]]*"; OFS=","; RS="</EmployeeData>[[:space:]]*"}
{ $1=$1; print }
.
$ awk -f tst.awk file
01,0101001001,DD-01-001-001-001/57,1,Vijay Raghavan,,3096,Govind Industries,,,
02,0202002002,DD-01-001-001-001/57,1,Bob Shmobswort,,1234,Some Other Places,,,
이가주고
"잘못된 문자 '오류입니다. * 나는. 또한, 선도 공백이) 윈도우하고 있어요"EmployeeData "라인이 AWK에서이 작업을 할 수있는 방법이 아니다 ... – user1955215
. 더 나은 출발점을 위해 (Kent & Jotne & myself에 의해 게시 된) 다른 답변 중 하나를 참조하십시오 .RS를 1 문자 이상으로 설정하는 솔루션은 GNU-awk에만 한정됩니다. –