2012-06-05 2 views
0
grep -F "$name" -A1000 filename | sed -n '1p;19p;24p' 

Предположим, let a=10,b=20,c=30. В приведенной выше команде grep можно использовать '$ap;$bp;$cp' вместо '1p;19p;24p'?Как включить переменные в команду sed?

Другое дело, что я дал как -A1000. Из чего следует, что начиная с 1p он считает до 1000 строк, не так ли? Мне нужно искать по всему файлу, не указывая номер.

+0

использование двойной, а не одиночные кавычки - ' "$ ар; $ п.н.; $ ф"' –

+0

@ зла Оттона: Я пытался в двойных кавычках тоже. Но получение ошибки в качестве недопустимого контекста пути. –

+1

Джеки, вопрос будет улучшен путем обозначения оболочки, которую вы используете. –

ответ

5

Если вы хотите включить переменные внутри кавычек, вам необходимо использовать " вместо '.

Если вы хотите добавить буквенно-цифровой суффикс к переменной, вам нужно указать, что это не часть его имени.

sed -n "${a}p;${b}p;${c}p" 

Или:

sed -n "$a"'p;'"$b"'p;'"$c"'p' 
+0

@ PsulP.R.O. & Banthar: Как насчет -A1000? Стоит ли упоминать, что количество строк (1000)? или это нормально, если я просто упоминаю как -А? –

+0

@JackieJames Я не уверен, чего вы пытаетесь достичь. Вы хотите [все строки после матча] (http://stackoverflow.com/questions/5968107/get-everything-in-a-file-after-a-grepd-string)? –

+0

@ Banthar: Я просто хочу напечатать строки в команде sed. Как я могу это сделать? –

Смежные вопросы