Если вы действительно хотите использовать 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
— это ссылка на захваченный шаблон (в круглых скобках. ).
С 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