У меня есть скрипт, который принимает список слов и ищет их в файле. Я использую xargs, чтобы взять слова в списке и передать их grep.xargs и grep в скрипте bash
awk 'BEGIN { FS = ","; } { print $9 }' $file | xargs -I {} grep -w {} $second_file
Первая команда awk выполняет поиск 9-го столбца в $ файле. Он создает список из 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'
В моем скрипте это не работает, все результаты пустые.
Спасибо!
Это сработало! Я должен был быть более ясным. Мой вопрос: если в командной строке я набираю 'grep '\ sLB \ s' $ file', то как я могу реплицировать это в bash-скрипте, используя' xargs', где 'LB' будет аргументом, переданным' {} ' –
Бьет меня, я никогда не буду использовать такие харги. –