将文件的第一列与值进行比较,如果匹配则获取记录

将文件的第一列与值进行比较,如果匹配则获取记录

任何人都可以帮助我解决以下情况吗?我有一个参考文件,其中包含以下数据:

file_id|file_name
1|file1.txt
2|file2.txt
3|file3.txt

我有一个脚本接受输入作为 file_id 并获取第二列。

file_id=$1
header=$(awk -v a=$file_id -F '~' "$1==a {print $2}" \
/test/data/shared/dev/SrcFiles/datawarehouse/poc/file_ref_master.txt)

这给了我一个空白值而不是文件名。

输出:

vi file_lookup_poc.sh
$ sh -x file_lookup_poc.sh 1

file_id=1
++ awk -v a=$file_id -F '~' '$1==a {print $7}' /test/data/infa_shared/dev/poc/file_ref_master.txt
header=
echo

答案1

脚本

#!/bin/bash
m=$1
awk -F "|" -v m="$m" '$1 == m{print $2}' filename

输出

sh script.sh 1
file1.txt
 
sh script.sh 2
file2.txt

sh script.sh 3
file3.txt

相关内容