![한 열에서 값을 찾고 다른 열에서 해당 값을 인쇄합니다.](https://linux55.com/image/80039/%ED%95%9C%20%EC%97%B4%EC%97%90%EC%84%9C%20%EA%B0%92%EC%9D%84%20%EC%B0%BE%EA%B3%A0%20%EB%8B%A4%EB%A5%B8%20%EC%97%B4%EC%97%90%EC%84%9C%20%ED%95%B4%EB%8B%B9%20%EA%B0%92%EC%9D%84%20%EC%9D%B8%EC%87%84%ED%95%A9%EB%8B%88%EB%8B%A4..png)
값이 포함된 텍스트 파일이 있습니다.
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$
.