Когда я использую эту команду в сценарии:

grep -A 12 -B 37 "1000221411" /home/ashb/20181007/soap_nohup_20181007_0*.log | awk '{$1=""}1' > abcdef.txt

Но когда я пытаюсь поместить переменные, чтобы найти больше идентификатора в файлах журнала:

grep -A 12 -B 37 ${b} /home/ashb/20181007/soap_nohup_20181007_0*.log | awk '{$1=""}1' > abcdef.txt

Тогда файл abcdef.txt окажется пустым файлом. Я пытаюсь echo ${b}, и это на моем пути. как я могу это исправить? Ввод ${b}:

1000221411
1000248725
1000287875
1000296552
1
Ash Blake 18 Апр 2019 в 12:41

2 ответа

Лучший ответ

Похоже, это то, что вы пытаетесь сделать:

$ cat file
foo
1000221411
bar
1000296552

$ echo "$b"
1000221411
1000248725
1000287875
1000296552

$ grep -f <(echo "$b") file
1000221411
1000296552
0
Ed Morton 19 Апр 2019 в 00:54

Похоже, что ${b} предназначен как массив, так как он содержит 9 чисел. Проблема с кодом выше:

  1. ${b} без кавычек, поэтому grep получает слишком много 8 параметров.

  2. Если бы ${b} были в кавычках, grep находил бы только 9 чисел в том же порядке. Но grep не нашел бы ничего в файле только с одним из этих чисел.

0
agc 19 Апр 2019 в 07:24