【发布时间】:2014-08-27 20:30:19
【问题描述】:
我正在尝试读取用户输入,使其与 csv 文件的第一个字段匹配,然后打印出整行。这是我想出的:
#/bin/bash
echo "enter number: "
read USERINPUT
LINENUMBER=$(awk -v FS=',' '{print $1}' < test.csv | grep -n "$USERINPUT")
FULLLINE=$(sed -n $LINENUMBER\p test.csv)
echo $FULLLINE
我遇到的问题是我设置了 USERINPUT=4 但我的 csv 文件有几行,如 4、421、444 等。我匹配所有这些。我该怎么做
grep -n "$USERINPUT"
只匹配它设置的内容而不匹配其他内容?
【问题讨论】:
-
改掉使用 ALL_CAPS_VARNAMES 的习惯:有一天你会写
PATH=foo然后想知道为什么你的脚本坏了。 -
Grep 支持
\<用于“左字边界”和\>用于“右字边界”。搜索\<4\>仅找到 '4' 本身而不捕获421、444等。