10

awkプログラミングを介してユーザー入力を読み取る方法はありますか?生徒の名前とIDを含むファイルを読み取るスクリプトを書いてみます。キーボードを使用してユーザーから学生の名前を取得し、awkを使用してすべての学生の結果を返す必要があります。

4

3 に答える 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 に答える