awkプログラミングを介してユーザー入力を読み取る方法はありますか?生徒の名前とIDを含むファイルを読み取るスクリプトを書いてみます。キーボードを使用してユーザーから学生の名前を取得し、awkを使用してすべての学生の結果を返す必要があります。
16154 次
3 に答える
19
この機能を使用して、ユーザー入力を収集できますgetline
。必ずBEGIN
ブロックに設定してください。内容は次のscript.awk
とおりです。
BEGIN {
printf "Enter the student's name: "
getline name < "-"
}
$2 == name {
print
}
ID、名前、結果を含むファイルの例を次に示します。
1 jonathan good
2 jane bad
3 steve evil
4 mike nice
次のように実行します:
awk -f ./script.awk file.txt
于 2012-10-16T03:53:26.173 に答える
7
入力ファイルが次のようにフォーマットされていると仮定します。
name<tab>id
ペアで、ファイル内の名前がユーザー入力と一致する行を印刷する場合は、次のことを試してください。
awk '
BEGIN { FS=OFS="\t"; printf "Enter name: " }
NR == FNR { name = $0; next }
$1 == name
' - file
または、GNU awkを使用すると、nextfileを使用できるため、入力後にcontrol-Dを入力する必要はありません。
awk '
BEGIN { FS=OFS="\t"; printf "Enter name: " }
NR == FNR { name = $0; nextfile }
$1 == name
' - file
それがあなたがやろうとしていることではない場合は、いくつかのサンプル入力と期待される出力を投稿してください。
于 2012-10-16T04:02:59.380 に答える
2
私はラインでテストしました
"awk 'BEGIN{printf "enter:";getline name<"/dev/tty"} {print $0} END{printf "[%s]", name}' < /etc/passwd"
そして私にとっては、より良い解決策であり、より読みやすいものです。
于 2013-04-22T15:57:23.647 に答える