Присоединение к второму столбцу

jq - безусловно, самое элегантное решение. С помощью awk вы можете написать

awk -v id=1490 '
    $1 == "\"id\":" && $2 == id"," {matched = 1}
    $1 == "}," {matched = 0}
    matched && $1 ~ /temperature|humidity/ {sub(/,/,"", $2); print $2}
' file
0
31.08.2018, 14:02
2 ответа

Использованиеsed:

$ sed '2,$s/,/.1,/2' file
ip,time,name
1.1.1.1,2018-08-31 10:01:03.1,postgres
2.1.1.1,2018-08-31 12:51:13.1,oracle
3.1.1.1,2018-08-31 14:32:53.1,sql

Это применяет замену к строке 2 и далее(2,$). Замена s/,/.1,/2заменяет вторую запятую на .1,. Именно /2в конце команды подстановки заставляет ее перейти ко второму совпадению.

1
28.01.2020, 02:23

Используйте это:

awk -F, 'BEGIN{OFS=","} NR>1{$2=$2".1"}1' file
  • -F,задает разделитель полей ввода
  • BEGIN{OFS=","}задает разделитель полей вывода
  • NR>1{$2=$2".1"}добавляет .1, если номер строки больше 0, ко второму полю
2
28.01.2020, 02:23

Теги

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