У меня есть скрипт, который берет список слов и ищет их в файле. Я использую xargs, чтобы взять слова из списка и передать их grep.
awk 'BEGIN { FS = ","; } { print $9 }' $file | xargs -I {} grep -w {} $second_file
Первая команда awk ищет 9-й столбец в $file. Он создает список из ~ 50 имен, таких как YHOO, AAPL, LB и т. Д. (Биржевые символы). Затем я передаю результат grep с помощью xargs и ищу уникальные вхождения.
Проблема в том, что grep иногда возвращает правильные символы тикера и другие символы, к которым добавлен .#.
Например:
LB
LB.1
будет возвращено приведенной выше командой.
Файл, в котором выполняется поиск ($second_file выше), выглядит так
2006-09-30 006733 LB 501797104 25504010 10 26.490000 2006-09-30 28.940000 2006-12-31 0.092488
В терминале я могу ввести
grep '\sLB\s' $second_file
и он возвращает только LB, а не LB.1, чего я и хочу.
Как я могу реплицировать '\sLB\s' в скрипте, используя xargs? если я напишу
grep '\s{}\s'
в моем скрипте это не работает, все результаты пустые.
Спасибо!