Скрипт Bash для разделения строки содержит «^ A» - PullRequest
0 голосов
/ 13 марта 2019

Мой файл содержит строку типа

39=2^A40=1^A54=2

Я хочу получить вот так

39=2,40=1,54=2

Как можно указать значение iIseparate, если строка содержит ^ A`` в скрипте Bash?

Ответы [ 4 ]

2 голосов
/ 13 марта 2019

С помощью sed вы можете просто поменять свой ^A разделитель запятой:

echo "39=2^A40=1^A54=2" | sed 's/\^A/,/g'

С помощью awk вы можете сделать:

echo "39=2^A40=1^A54=2" | awk 'BEGIN{FS="[\\^][A]";OFS=","}{$1=$1}1'
1 голос
/ 13 марта 2019

, если ^A s были буквальными строками, другие ответы должны помочь.Просто примите один, и я собираюсь удалить этот ответ.Если ответы не помогли вам, вы можете попробовать это:

Примечание

все ^A ниже, вы должны ввести так: Ctrl-V ctrl-A


в vim

вы упомянули "открыть его в vi", вы можете в vim do:

:%s/^A/,/g

с помощью sed

sed 's/^A/,/g' file
1 голос
/ 13 марта 2019

Вы можете использовать sed следующим образом:

echo '39=2^A40=1^A54=2' | sed 's/\^A/,/g'
39=2,40=1,54=2
0 голосов
/ 13 марта 2019
echo 39=2^A40=1^A54=2 | awk '{sub(/\^A40=1\^A/,",40=1,")}1'
39=2,40=1,54=2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...