Grep для конкретного элемента

Я как бы застрял в сложной ситуации. У меня есть файл, содержимое которого выглядит так:

3 2017-05-30 2017-09-29 2 2017-05-27 2017-08-26 1 2017-05-27 2017-08-26 

Теперь пользователь выбирает изменить дату, выбирая labelNum, который будет значением в столбце 1. По запросу, если пользователь входит 3. Я хочу напечатать столбец 2.

Поэтому я написал.

 cat temp.txt | grep $labelNum | awk '{print $2}' 

Если labelNum равно 3, я получаю вывод как 2017-05-30

Но, если пользователь вводит labelNum как 2, я получаю:

 2017-05-30 2017-05-27 2017-05-27 

Потому что он ищет «2» везде в файле .txt. Тем не менее, мне нужен столбец 2 для labelNum 2, который будет 2017-05-27

Есть ли способ сделать это? Я попытался использовать awk для замены grep, но не повезло.

Благодарю.

Изменить: строки являются динамическими и могут меняться по мере добавления новых записей в текстовый файл. Поэтому нельзя использовать sed для перехода к строке

  • Каковы точные различия между awk и cut с grep?
  • Может ли grep использоваться для поиска файлов с некоторой строкой в ​​их именах?
  • Найти все файлы и использовать результат в шаблоне поиска grep
  • Получить переменную из строки
  • tcpdump не будет захватывать весь пакет
  • Как найти все файлы, содержащие различные строки из длинного списка комбинаций строк?
  • Трубопровод с grep и найти отпечатки числа перед результатом
  • Как найти слово с частью окружающего контекста с помощью grep?
  • 2 Solutions collect form web for “Grep для конкретного элемента”

    С одним awk :

     awk -v lbl=$labelNum '$1 == lbl{ print $2 }' temp.txt 

    • -v lbl=$labelNum – передача labelNum переменной labelNum в awk-скрипт

    • $1 == lbl – если значение первого столбца равно значению переменной – выполняется следующее выражение

    Вы также можете оставаться в стороне от своего решения:

     cat temp.txt | grep ^$labelNum | awk '{print $2}' 

    Которое будет совпадать в начале строки, или

     awk '/^'$labelNum'/{print $2}' temp.txt 

    Будет работать одинаково, но побег непросто внутри awk.

    Interesting Posts

    Как использовать геймпад PS с OpenWRT?

    Как установить awesome wibox, видимый только для определенных тегов?

    atom не может быть запущен, потому что libgtk-x11-2.0.so.0 не найден, но ldd может найти его

    Как переформатировать табличные данные с помощью AWK?

    Установка Simon Listens на Linux Mint

    Как я могу определить, контролируется ли оболочка из SSH?

    Рекомендуемое расположение приложений node.js в Linux-файловой системе?

    OpenSuse – сетевые проблемы

    Инструмент для переноса конфигурации службы

    Mint изменяет маршрут по умолчанию, когда eth0 возвращается и ломает существующие соединения tcp

    iconv не может преобразовать числа с кругом в / из японских кодировок

    Присоедините два текстовых файла к порядку ведения 1-го столбца и неустранимые строки из 1-го файла

    openSuse, новый пользователь не может войти

    Строка состояния i3: низкая батарея не отображается красным цветом

    Linux. Отправка команды на экран через сценарий оболочки?

    Linux и Unix - лучшая ОС в мире.