1回試してください

1回試してください

DD-MM形式のDOBにマップされた名前のリストを含むファイルを生成しようとしています。

試行1)で一致が機能しなかったため、試行2)のようにコマンドラインから実行しようとしましたが、まだ機能しませんでした。どんな提案がありますか?

ありがとう

file.txt
jason 08-04

1回試してください

XXXXXX$ cat a.txt
#!/bin/bash

file="file.txt"

current_date=$(date +%d-%m)
awk -F" ", 'if ($2==$current_date) print $1)' "$file"

2回試してください

awk -F" ", '{
if ($2=='08-04')
   print "$1"
}' file.txt

ベストアンサー1

両側に問題があります。努力する:

試み #1質問:

  • 変数が$current_date一重引用符内に挿入されていません。
  • フィールド区切り文字の後にカンマが正しく配置されていませんawk -F" ",。 <--
  • ifawkの作業区切り文字の外で演算子を使用しようとすると、エラーが{ ... }発生します。syntax error ...

試み #2質問:

  • フィールド区切り文字の後にカンマが正しく配置されていませんawk -F" ",。 <--
  • 一重引用符が壊れています。'...'08-04'...'

正しい方法(変数をawkコマンドにパラメータとして渡す):

awk -v d="$curr_date" '$2==d{ print $1 }' "$file"

おすすめ記事