한 열에서 값을 찾고 다른 열에서 해당 값을 인쇄합니다.

한 열에서 값을 찾고 다른 열에서 해당 값을 인쇄합니다.

값이 포함된 텍스트 파일이 있습니다.

1 Peter
2 Paul

두 번째 열(예: Paul)을 매개 변수 값으로 사용하고 첫 번째 열(2)의 해당 값을 반환하는 명령/스크립트가 필요합니다.

while 루프를 사용하려고 하는데 필요한 값을 어떻게 찾나요?

while IFS= read -a line; do      
  printf "%s\n" "${line[@]}"     
done < "file.txt"

답변1

GNU grep을 사용하십시오:

grep -Po ".* (?=Paul)" file

산출:

2

또는 bash를 사용하십시오.

while read -r num name; do
  [[ $name == "Paul" ]] && printf "%s\n" "$num"
done < file

답변2

awk이 경우에 유용할 수 있습니다.

$ awk '$2 == "Paul" {print $1}' input.txt
2

또는 대화식으로:

$ awk 'BEGIN{printf "Name: "; getline name < "-"} $2 == name {print $1}' input.txt
Name: Paul
2

답변3

먼저 grep 한 다음 다음과 같은 값을 읽을 수 있습니다.

grep -w Paul file.txt | while read v k; do echo $v; done

Paul그것이 마지막 열이라는 것을 알고 있다면 를 사용하십시오 Paul$.

관련 정보