Я пытаюсь прочитать userinput, сопоставить первое поле файла csv и распечатать всю строку. Вот что я придумал:строка печати, которая соответствует первому полю (bash)
#/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' и т. Д. – OnlineCop