2015-05-12 3 views
1

Так у меня есть файл сказать а с содержанием:Включить # (комментируемые линии) при использовании AWK

Post=76.34.34 
Pull=56.76.34 
# In case you're not a regular user then post 76.34.36/37, 
# change the value to (1.1.1,) 
Number=506442 

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

Поэтому я использую

awk '/Post=76.34.34/ && /Pull=56.76.34/ && /# In case you're not a regular user then post 76.34.36/37,/ && /# change the value to (1.1.1,)/ && /Number=506442/' /File/ToBe/Compared 

вопрос здесь приходит из-за #. Для таких символов, как #, ' (в том числе вы), как это сделать? Необходимо использовать эту команду awk для сравнения только этих строк, а затем сопоставить ее в файле.

Необходимо знать, как включить #, 'в таком случае.

+1

Эти тесты не могут все вернуться верно. Они проверяют только одну строку. Вы хотите проверить последовательные строки? Почему, по-вашему, проблема '#' является проблемой? Можете ли вы более четко объяснить, что именно вы пытаетесь сделать? –

+0

Таким образом, в основном этот файл имеет определенные конфигурации, и данные иногда меняются после определенных операций. Я жестко кодирую эти строки в awk-заявлении, и если в случае изменения данных, я просто добавлю исходные данные обратно в этот файл. So 'awk '/Post.............../File/Path если [$? ! = 0] truncate -s 0/Файл/Путь echo "Original Data" ' – newtocoding

+1

Зачем вообще проверять? Почему бы не просто воссоздать исходные данные? (Как говорится, почему это меняется в первую очередь?) –

ответ

0

# в виде рисунка или последовательности не должно вызывать никаких проблем:

$ echo "# hello" | awk '/^#/ { print $2 }' 
hello 

Единственная цитата немного больше боли, потому что мы обычно прилагаем наш AWK в линию команд с одинарными кавычками. У разных людей разные любимые способы борьбы с этим.

Использование \x27

$ echo "you're welcome" | awk '/you\x27re/ { print $2 }' 
welcome 

Поместите свой AWK сценария в файле

$ cat foo.awk 
/you're/ { print $2 } 

$ echo "you're welcome" | awk -f foo.awk 
welcome 

Surround сценарий в линии с двойными кавычками и бежать по мере необходимости (Я бы сэкономил это м этод только для самых тривиальных случаев или, может быть, никогда).

$ echo "you're welcome" | awk "/you're/ { print \$2 }" 
welcome 
Смежные вопросы