![입력 파일을 인수로 전달하여 AWK 스크립트 작성](https://linux55.com/image/138445/%EC%9E%85%EB%A0%A5%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EC%9D%B8%EC%88%98%EB%A1%9C%20%EC%A0%84%EB%8B%AC%ED%95%98%EC%97%AC%20AWK%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%20%EC%9E%91%EC%84%B1.png)
저는 Linux를 처음 접했기 때문에 비교적 간단한 작업일 수 있지만 연구는 실패했습니다. 하나 쓰고 싶다awk 스크립트한 줄에 한 단어만 사용하여 입력 파일을 반복하고 이를 변수에 할당해야 하며 이에 대한 문자열 조작을 수행해야 합니다. 터미널에 입력된 입력 파일을 참조하여 각 줄의 단어를 가져와 변수에 할당하는 방법이 매우 혼란스럽습니다.
답변1
각 줄에 단어가 있으면 awk
해당 단어를 $1
("첫 번째 필드")에 넣습니다. 원하는 경우 거기에서 추출하여 변수에 넣을 수 있습니다 var = $1
. 어쨌든, 연산 $1
(또는 변수에 값을 할당하는 경우)을 통해 var
원하는 문자열 조작을 수행 할 수 있습니다.
word=otherthing
예를 들어, 각 단어가 다음 과 같고 출력하려고 한다고 가정해 보겠습니다 otherthing
.
awk '{ split($1, a, "="); print a[2] }' infile
또는 더 짧거나,
awk -F '=' '{ print $2 }' infile
$2
은 각 행의 두 번째 필드이며 이러한 필드는 로 구분되어 -F '='
있습니다 .awk
=
무엇을 해야 하는지 언급하지 않았으므로 더 이상 예를 제시하지 않겠습니다.
사용자가 직접 호출할 수 있는 스크립트로 작성할 수도 있습니다.
#!/usr/bin/awk -f
BEGIN { FS = "=" }
{ print $2 }
이는 텍스트 파일로 저장되어 실행 가능하게 만든 다음( 를 사용하여 chmod +x script.awk
) 사용자가 사용할 수 있습니다.
./script.awk infile
... #!
-line이 바이너리를 가리킨다 고 가정합니다 awk
.