Хотите использовать grep в цикле for для строк grep с [43], специальными символами [ & ]

Я пробую следующую команду:

for i in `cat list_to_216 `; do egrep ResalathTable\[$i\] Res_149 ; done

файл list_to_216 содержит следующие данные:

adv@oam # head list_to_216
715
716
717

а файл Res_149 содержит:

ResalathTable[715].field1=RIZZ
ResalathTable[715].field2=1
ResalathTable[715].field3=681

Кажется, я не могу получить правильный вывод, который мне нужен...


person Riss    schedule 07.11.2014    source источник
comment
Вы ищете ResalathTable или annoIdTable? Текущий входной файл ничему не соответствует.   -  person fedorqui 'SO stop harming'    schedule 07.11.2014


Ответы (4)


fgrep должен помочь вам в выполнении работы :-)

for i in `cat list_to_216 `
do
    fgrep ResalathTable[$i] Res_149
done
person vysakh divakaran    schedule 07.11.2014
comment
Похоже, это самый простой способ. Спасибо. - person Riss; 07.11.2014
comment
Это не просто, а глючно, все подвержено расширению оболочки. Здесь совершенно не нужно cat. - person anubhava; 07.11.2014
comment
Хорошо, так какое лучшее предложение? Должен ли я использовать параметр while? Хорошо, я попробую это сейчас. - person Riss; 07.11.2014

Вам нужно использовать -f, если ваш шаблон находится в файле, как показано ниже:

grep -f list_to_216 Res_149
person SMA    schedule 07.11.2014

grep здесь проще всего, но это awk должно делать, чтобы:

awk 'FNR==NR {a[$0]++;next} {for (i in a) if ($0~i) print}' list_to_216 Res_149
person Jotne    schedule 07.11.2014

Это должно работать:

while read -r ; do
    grep "ResalathTable\[$REPLY\]" Res_149
done < list_to_216
person anubhava    schedule 07.11.2014