Linux удаляет вхождение предложения из файла и добавляет начало и конец

Если вы действительно хотите использовать sed(, что я не рекомендую, если доступны awkили perl), тогда предположим, что шестой столбец заканчивается строкой, а не запятой И что поля сами по себе не содержат встроенных (кавычек )запятых:

sed -E -e 's/([^,]*),/"\1",/1' -e 's/([^,]*),/"\1",/5' -e 's/([^,]*)$/"\1"/' file
"2018-03-18 4:56:17",255.255.255.255,00,ssh,"admin","123"

Общий шаблон — s/([^,]*),/"\1",/n, где nотносится к n-му вхождению нуля или более символов, отличных от -,, за которыми следует ,, а \1— это ссылка на захваченный шаблон (в круглых скобках. ).

0
03.05.2020, 21:35
1 ответ

С GNU sed все начнется так же просто, как

sed 's/...//g2' file

В GNU sed запрос заменыgeneral(g)с последующим номером означает, что все повторения , начинающиеся с с номером, будут заменены.

sed 's@<?xml version='1.0' encoding='ISO-8859-1' ?><REPLY>@@g2' file 

Конечно, это не меняет теги </REPLY>, это:

sed 's@</REPLY>@@g' file; echo '</REPLY>' >> file
0
28.04.2021, 23:16

Теги

Похожие вопросы