2014-09-10 4 views
1

여기 [링크] Using awk to find a string in a fileAWK 명령 - 여러 변수는 반환 할 변수

[2 - 링크 여기 awk command to accept two variables as parameters and return a value

가 테이블 :

---------------------------------------------------- 
Id Name  CreationDate   Comment 
---------------------------------------------------- 
1 testing: 19.10.11    created by jag 

2 develop 19.10.12    created by jag 

3 array  19.10.12    created by jaguuuu 

4 start123 19.10.12    created by akj 

그래서 나는이 두 가지를 언급이 , 내가 뭘 하려는지 첫 번째 열에서 ID 번호와 두 번째 열에서 이름을 얻는 것입니다.

예를 들어, id = 1 및 name = testing을 취하면; 첫 번째 열 id = 1과 두 번째 열 name = testing에서 찾으면 내 출력이 테스트됩니다.

이것은 코드입니다. a는 일부 출력이 저장된 변수입니다.

b=$(echo "$a" | awk -v var1=1 -v var2=testing '$1 ~ var1 && $2 ~ var2 {print $2}') 
echo "$b" 

하지만 아무것도 출력하지 않습니다. 나는 그것이 테스트를 인쇄 할 것이라고 생각했다.

업데이트 : 필드 1 :::: 우리의 경우

1 testing: 19.10.11    created by jag 

, 입력 :

1 testing:     

출력 :

testing: 

경우 VAR1 = 1 2 = VAR 테스트 둘 다 column1 ("1") 및 column2 ("testing :") 바로 아래에서 같은 행에 있습니다.

불만을 많이 드려 죄송합니다. 새로운 것이므로 코드 작성을 통해 배우려고합니다.

참고 : 테이블은 변수 a에 저장됩니다. 그것이 작동하지 않는 이유

x=$(echo"$a"|awk -v var1=1 -v var2=testing '$1 ~ var1 && $2 ~ var2 {print $2}') 
echo"$x" 

을하지만 궁금 :

그래서,이 작동합니다. 너희들이 언급 한 것과 같은 것들을 몇 가지 더 확인하고 내일 너희들에게 돌아올거야. 자신의 값을 얻기 위해 변수 이름 앞에 $ 퍼팅

덕분에

+0

는'A = "1 개 테스트"고려', 샘플 코드는이 작품을 제공했다. –

답변

2

쉘 구문입니다. awk는 쉘이 아닙니다. C 또는 다른 언어와 마찬가지로 변수 이름을 사용하십시오.

awk -v var1=1 -v var2=testing '$1 ~ var1 && $2 ~ var2 {print $2}' 

하지만 실제로는이 작업을 수행하지 않을 가능성이 있습니다. 샘플 입력과 예상 출력으로 다른 질문을 게시하십시오. 올바른 방법을 제시 할 수 있습니다.

업데이트 된 질문에서 샘플 입력을 사용 :

$ cat file 
---------------------------------------------------- 
Id Name  CreationDate   Comment 
---------------------------------------------------- 
1 testing: 19.10.11    created by jag 

2 develop 19.10.12    created by jag 

3 array  19.10.12    created by jaguuuu 

4 start123 19.10.12    created by akj 

$ awk -v var1=1 -v var2=testing '$1 ~ var1 && $2 ~ var2 {print $2}' file 
testing: 
+0

이 문제는 내가 원하는 것이 아닙니다. 아직 인쇄되지 않습니다. – kyle

+0

그러면 우리가 할 수있는 일은 샘플 입력과 예상 결과를 게시하여 실제로 무엇을 하려는지 이해할 수 있도록 기다리는 것입니다. –

+0

다른 질문을 올리려고 시도했습니다. 90 분을 기다려야합니다. 여기서 a는 내 출력 (위에 표시된 표가 저장되는 변수)입니다. 여기에 설명하려고하자 : 이제 나열된 링크 중 하나의 표에 표시된 것과 같이 1과 동일한 변수와 테스트와 동등한 다른 변수를 가져 가고 싶습니다. 둘 다 $ 1에 존재한다면 ($ 1에 의해 말입니다. column1)과 $ 2를 같은 행에 추가합니다. 테스트와 일치하고 출력합니다. 일치하지 않는다면 말하지 않을 것입니다. if/else 문 로직을 얻은 후에 마침내 추가 할 것이라고 생각했습니다. – kyle