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" ",
。 <-- if
awkの作業区切り文字の外で演算子を使用しようとすると、エラーが{ ... }
発生します。syntax error ...
試み #2質問:
- フィールド区切り文字の後にカンマが正しく配置されていません
awk -F" ",
。 <-- - 一重引用符が壊れています。
'...'08-04'...'
正しい方法(変数をawkコマンドにパラメータとして渡す):
awk -v d="$curr_date" '$2==d{ print $1 }' "$file"