手头的任务:
我有一个包含四个制表符分隔值的文件:
peter 123 five apples
jane 1234 four rubberducks
jimmy 01234 seven nicknames
我需要根据第二列从该文件中获取一行,并且该值在变量中。假设我将数字123存储在变量foo中。在bash我可以做
grep $'\s'$foo$'\s'
我离开了彼得的信息而没有别的。有没有办法在仪表板或灰烬上达到相同的效果?
答案 0 :(得分:0)
您可以在此处使用awk
:
var='1234'
awk -v var="$var" '$2 == var ""' f
jane 1234 four rubberducks
PS:我正在var ""
,以确保将var
视为字符串而不是数字。
答案 1 :(得分:0)
如果你的文件足够小以至于在shell中进行迭代的效率低并不重要,那么你根本不需要grep
。以下内容适用于任何符合POSIX标准的shell,包括ash或dash:
var=123
while read -r first second rest; do
if [ "$second" = "$var" ]; then
printf '%s\t' "$first" "$second"; printf '%s\n' "$rest"
fi
done
(在实践中,我可能会在这里使用awk;考虑一下这个演示)。