grep -v под запросом двойных кавычек
У нас есть часть кода, которая утверждает,
"diff file1 file2 | /usr/bin/grep -v "#" | /usr/bin/grep ^\> | /usr/bin/awk '{print $3}' | /usr/bin/xargs mkdir"
Весь оператор заключен в двойные кавычки (это требование синтаксиса приложения). Когда приложение достигает этой стадии, оно выдает ошибку grep. Это утверждение хорошо работает в командной строке. Но через приложение выдает ошибку для grep.
Использование: grep [OPTION]... PATTERN [FILE]...
Попробуйте `grep --help'для получения дополнительной информации.
Так что не уверен, что это первый или второй grep, который является проблемой.
2 ответа
Похоже, проблема с двойными кавычками. Попробуйте изменить свой первый grep на /usr/bin/grep -v '#'
и второй grep для /usr/bin/grep '^>'
Ты используешь grep -v ^>
а также >
означает "перенаправление".
Если вы, например, делаете:
grep ^>output
весь вывод будет сохранен в файле output
,
Итак, что вам нужно сделать, это процитировать ^>
так что это интерпретируется как шаблон, который вы ищете:
"diff file1 file2 | /usr/bin/grep -v "#" | /usr/bin/grep "^>" | /usr/bin/awk '{print $3}' | /usr/bin/xargs mkdir"
^ ^
Кстати, отметьте все ваши grep
s можно уменьшить следующим образом:
diff file1 file2 | awk '/#/ || /^>/ {print $3}' | /usr/bin/xargs mkdir
^^^ ^^ ^^^^
either contains # | |
or starts with >