What is the будьте comand to fix this file so second to last boolean is converted to opposite

Give в file containing lines of text such схвати

"00007960-9d81-4192-b548-ad33d6b0ca54","true",0.984725773335,"false",1.0,"true",0.808817088604,"false",0.705779910088,"false",0.928222000599,"false",0.999984204769,"false",1.0,"false",0.904409646988,"true",0.979391694069,"true",0.977430343628,"false",0.999999582767

what is the будьте (or сходный) command to fix this file so the second to last boolean оцените on each line is повторно нравьтесь with the opposite оцените. So for some lines the оцените "false" will become "true", and for others the оцените "true" will become "false"

"00007960-9d81-4192-b548-ad33d6b0ca54","true",0.984725773335,"false",1.0,"true",0.808817088604,"false",0.705779910088,"false",0.928222000599,"false",0.999984204769,"false",1.0,"false",0.904409646988,"true",0.979391694069,"false",0.977430343628,"false",0.999999582767

(я заметил the second to last true ты существуешь become false)

0
задан 8 December 2015 в 14:45

2 ответа

Попробуйте awk:

awk -F, 'BEGIN{a["\"true\""] = "\"false\""; a["\"false\""] = "\"true\""; OFS=","} {$(NF - 3) = a[$(NF - 3)]}1'

Это предполагает, что третье последнее поле каждой записи "true" или "false".

следующие тесты, если третье последнее поле "true" или "false":

awk -F, 'BEGIN{a["\"true\""] = "\"false\""; a["\"false\""] = "\"true\""; OFS=","} $(NF -3) in a {$(NF - 3) = a[$(NF - 3)]}1'
3
ответ дан 26 July 2019 в 13:12

С bash:

#!/bin/bash
    while IFS=, read -r -a line; do 
       if [ "${line[@]:(-4):1}" = \"true\" ]; then 
           IFS=,; printf '%s\n' "${line[*]:0:$((${#line[@]}-4))},\"false\",${line[*]:(-3)}"
       else
           IFS=,; printf '%s\n' "${line[*]:0:$((${#line[@]}-4))},\"true\",${line[*]:(-3)}"
       fi
    done <file.txt

Здесь мы создаем массив из каждой строки с элементами, разделенными по телефону ,.

Тогда, мы проверяем, является ли 4-й элемент от конца "true" или "false", и затем замена сделана соответственно.

2
ответ дан 26 July 2019 в 13:12

Другие вопросы по тегам:

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