2015-07-14 2 views
1

У меня есть огромный файл с линиями, какAWK: комментарий к SQL заявление

INSERT INTO mytable(),()... 

Я хотел бы заменить только те строки, начинающиеся с INSERT INTO mytable по

/* INSERT INTO mytable(),()... */ 

Я знаю, что есть тонны возможности, в том числе хороший поиск vim, замените макрос, но я бы хотел сделать это в командной строке.

+0

Использует 'awk' требование здесь? Если да, то почему? Потому что, например, используя 'perl', это можно сделать следующим образом:' perl -pe 's,^\ s * (INSERT INTO mytable. * $),/* \ 1 * /, g' ' –

ответ

1

Вот версия AWK:

awk '{ gsub("^(INSERT.*)","/* & */"); print $0 }' 

Это при условии, что INSERT является первым символ на линии. Если может быть ведущим пробелы, используйте вместо этого:

awk '{ gsub("^([[:space:]]*INSERT.*)","/* & */"); print $0 }' 

Это должно работать с не-GNU AWK, как хорошо. Я тестировал Linux и AIX.

+1

Я спросил у awk , Я не знаю, почему они ответили sed. Если бы я спросил с awk, это должно было изучить awk, а не sed: D Большое спасибо за ваш ответ. –

1

дают это СЭД Однострочник попробовать:

sed 's#^INSERT INTO mytable.*#/* & */#' file 
0
sed -e "s/^INSERT INTO mytable.*/\/\* & \*\//" file.txt 

другой СЕПГ возможность

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