Во-первых,
Пожалуйста, дайте мне знать, что не так в приведенной выше команде
Когда вы написали cat file.txt | grep -w 1234-A0
, это должно быть grep -w 1234-A0 file.txt
(я имею в виду, что это бесполезно) передать из cat
в команду, которая может непосредственно читать файл, плюс вы потребляете часть ценных ресурсов, делая свой сценарий неоптимальным)
При этом вы запросили строки со словом "1234-A0 "... и это именно ваш вывод! Теперь попробуйте следующее и запишите различия:
grep ':1234-A0' file.txt
(у вас должна быть первая строка) grep '1234-A0:' file.txt
(у вас должна быть вторая) grep '^1234-A0' file.txt
(тоже вторая строка)
Добавьте другие строки, с произвольным "1234-A0" в другом месте файла и перезапустите примеры выше, чтобы увидеть различия.
Last,
какая должна быть правильная команда
После того, как вы дадите правильный шаблон, вы можете теперь резать трубу, как вы это делали: grep '^1234-A0:' file.txt | cut -f2 -d:
например.
Язык AWK - это еще один способ go, более краткий, но не сейчас, поскольку вы все еще изучаете BRE (также встречается в sed
и vi
, тогда как awk
использует ERE)