2017-12-08 15 views
1

포럼에 주어진 문제에 대해 다른 해결책을 시도했지만 지정된 구분 기호 %$%에 대해 작동하지 않습니다. 특정 하나를 추출해야합니다. 200+ 열을 포함하는 파일의 열.

나는 다음을 시도 :

awk -F"%$%" '{print $1}' sample.txt > outfile.txt 
awk 'gsub("%$%",":")' sample.txt > outfile.txt 

답변

1

당신은 또한 리터럴 문자열에 특수 문자 인 \, 그것을 탈출 할 수 있도록 기호 $가 있으므로, 정규식에서의 특수 문자 다시 이스케이프해야합니다.

그래서, 마지막으로 우리는이 :

$ cat sample 
ghkjlj;lk%$%23e;k32poek%$%eqdje2oijd%$%xrgtdy5h 

$ awk -F'%\\$%' '{print $1}' sample 
ghkjlj;lk 
1

상관없이 -F (FS) 또는 gsub(), 그것은 정규식을 기대하고, 당신이 사용하는 문자 클래스 중 하나를 필요로하거나 예 $처럼 특별한 의미와 그 문자를 탈출. 당신은 단지 구분을 변경하려면

kent$ awk -F'%[$]%' '{print $1}' <<<"foo%$%bar%$%blah" 
foo 

, 당신은 gsub 또는 OFS을 사용하여 수행 할 수 있습니다

kent$ awk -F'%[$]%' -v OFS=":" '$1=$1' <<<"foo%$%bar%$%blah" 
foo:bar:blah 
kent$ awk 'gsub(/%[$]%/,":")+1' <<<"foo%$%bar%$%blah" 
foo:bar:blah