폴더의 모든 파일에 awk 스크립트를 적용하려고 하는데 다음을 사용하고 있습니다.
for %%i in (*.txt) do (awk -f NormalizeFiles.awk "%%i" > new\"%%i")
그런데 다음과 같은 메시지를 받았습니다.
Syntactic error near the unexpected element '('
나는 무엇이 잘못되었는지 모른다.
답변1
awk를 통해 입력 파일을 실행하고 결과를 다른 파일 이름에 저장하려는 것 같습니다. 매우 구체적인 파일 이름 지정이 필요하지 않은 한 다음과 같이 작동합니다.
for i in *.txt; do
awk -f NormalizeFiles.awk $i > $i.out
done
귀하의 질문에 bash 태그가 지정되어 있지만 누군가 지적했듯이 귀하의 구문은 괄호를 잘못 사용하는 등 bash가 아닙니다. %% 구문은 올바르게 사용되지 않으며 목표와 관련이 없는 것 같지만 확인해야 합니다.http://www.tldp.org/LDP/abs/abs-guide.pdf더 알고 싶다면.
답변2
awk
다른 파일에 직접 쓸 수 있습니다.
예를 들어
awk '{print > "new/"FILENAME}' *.txt
스크립트에서 이와 같은 것을 사용할 수 있습니다 NormalizeFiles.awk
.
모든 print 문에 대해 입력 하지 않으려면 > "new/"FILENAME
다음을 수행할 수 있습니다.
awk 'FNR == 1 { out = "new/"FILENAME } ; { print > out }' *.txt
out
스크립트는 FNR == 1
새 파일의 첫 번째 줄( )을 볼 때마다 출력 파일(변수에서)을 변경합니다.
그런데 스크립트에 #!/usr/bin/awk -f
첫 번째 줄이 있고 실행이 가능하다면 chmod
실행 파일이나 다른 스크립트처럼 직접 실행할 수 있습니다 ./NormalizeFiles.awk
.#!/bin/bash
#!/usr/bin/perl