値を含むテキストファイルがあります。
1 Peter
2 Paul
2番目の列(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$
。