べたつきの状況に閉じ込められています。内容は次のようなファイルがあります。
3 2017-05-30 2017-09-29
2 2017-05-27 2017-08-26
1 2017-05-27 2017-08-26
ユーザーは、列1の値になるlabelNumを選択して日付を変更するように選択します。プロンプトに従ってユーザーが3を入力した場合。 2列を印刷したいです。
だから私は書いた。
cat temp.txt | grep $labelNum | awk '{print $2}'
3の場合、labelNum
私が得た出力は次のようになります。2017-05-30
ただし、ユーザーがlabelNum
2を入力すると、次のような結果が得られます。
2017-05-30
2017-05-27
2017-05-27
.txtファイルのどこでも「2」を探しているからです。しかし、私は列2が2になりたいですlabelNum
。2017-05-27
これを行う方法はありますか? grepの代わりにawkを試してみましたが、成功しませんでした。
ありがとうございます。
編集:行は動的であり、より多くの項目がテキストファイルに追加されると変更されることがあります。したがって、sedを使用してその行に移動することはできません。
ベストアンサー1
シングルアッ:
awk -v lbl=$labelNum '$1 == lbl{ print $2 }' temp.txt
-v lbl=$labelNum
- 変数値をlabelNum
awkスクリプトに渡す$1 == lbl
- 最初の列の値が変数の値と等しい場合 - 次の式を実行します。