Замена подстроки на sed

Итак, у меня есть строка, которая выглядит так: ish

somelongbullshit:888:morelongbullshitthatcanhaveanything

И я хочу заменить второй : на символ табуляции. Я могу надежно сопоставить подстроку, которую хочу заменить, следующим образом:

^.*:[0-9]*(:)

Я хочу заменить ту подстроку, которая у меня есть. Поэтому я пробовал делать sed

$ echo somelongbullshit:888:morelongbullshitthatcanhaveanything | sed 's/:[0-9]*(:)/\1\t/g'
sed: -e expression #1, char 19: invalid reference \1 on `s' command's RHS

Но я получаю сообщение об ошибке. Я уверен, что есть некоторая синтаксическая ошибка, в которой я ошибся, но для жизни я могу ее найти.

Я также открыт для лучших решений (например, awk).

1
задан 10 April 2016 в 12:19

1 ответ

Не все версии sed распознают вкладку. поэтому нажмите Ctrl + V и нажмите клавишу Tab с клавиатуры. используйте эту команду
 $ echo "somelongbullshit:888:morelongbullshitthatcanhaveanything" | sed 's/\:/      /2'
 somelongbullshit:888    morelongbullshitthatcanhaveanything
0
ответ дан 23 May 2018 в 12:16

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

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