
값이 포함된 텍스트 파일이 있습니다.
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$
.