awk - заменить один символ только в определенный столбец

Я придумал короткий обходной путь, который не совсем идеален:

Я установил правило, чтобы принимать IP-адреса в диапазоне:

217.87.0.0/16

Это означает, что только первые 16 байтов IP являются статическими, а остальные - динамическими. Я думаю, это более безопасно, чем вообще не добавлять никаких правил.

8
04.01.2019, 17:14
3 ответа

Выполнено описанным ниже способом с использованием awk

Команда:awk -F ";" '{gsub(/\./,",",$2);print $1";"$2";"$3}' filename

выход

2018.01.02;1,5;comment 1
2018.01.04;2,75;comment 2
2018.01.07;5,25;comment 4
2018.01.09;1,25;comment 7
7
27.01.2020, 20:08
$ awk 'BEGIN{FS=OFS=";"} {gsub(/\./, ",", $2)} 1' ip.txt
2018.01.02;1,5;comment 1
2018.01.04;2,75;comment 2
2018.01.07;5,25;comment 4
2018.01.09;1,25;comment 7
  • BEGIN{}этот блок кода будет выполняться перед обработкой любой входной строки
  • FS=OFS=";"установить разделитель полей ввода и вывода как;
  • gsub(/\./, ",", $2)для каждой строки ввода, замените все .во 2-м поле на,
  • 1— это идиома awk для печати содержимого $0(, которое содержит входную запись)
29
27.01.2020, 20:08
sed 's/\./,/3' file

заменить точку в третьем месте

11
27.01.2020, 20:08

Теги

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