[英]How to use tab separators with grep in ash or dash script?
手头的任务:
我有一个带有四个制表符分隔值的文件:
peter 123 five apples
jane 1234 four rubberducks
jimmy 01234 seven nicknames
我需要根据第二列从此文件中取出一行,并且该值在变量中。 假设我在变量foo中存储了数字123。 我可以做
grep $'\s'$foo$'\s'
我从彼得的信息中脱颖而出,仅此而已。 有没有办法在破折号或灰烬上达到相同的效果?
您可以在此处使用awk
:
var='1234'
awk -v var="$var" '$2 == var ""' f
jane 1234 four rubberducks
PS:我正在执行var ""
,以确保var
被视为字符串而不是数字。
如果您的文件足够小,以至于在Shell中进行迭代的效率不重要,那么您实际上根本不需要grep
。 以下内容在任何POSIX兼容的外壳程序(包括灰或破折号)中均有效:
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;仅考虑演示)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.