Как скопировать часть строки к другой позиции

У меня есть приблизительно 100 операторов печати в файле как это:

printf("%f \n\n",row1.req_pnttime);

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

printf("row1.req_pnttime: %f \n\n",row1.req_pnttime);

Кто-либо может помочь мне сделать это?

PS - длина имени переменной отличается для каждого оператора печати, таким образом, мне нужен универсальный способ сделать это.

3
задан 7 April 2014 в 10:04

1 ответ

sed 's/\(.*("\)\(.*,\)\(.*\))/\1\3: \2\3)/' /path/to/input.txt >/path/to/output.txt

Объяснение

  • общий формат sed 's/find/replace/'. т.е. найдите выражение и замените его.
  • \(... \) это группы фиксации. Таким образом, что-либо, что соответствует промежуточный их, "получают" в переменной и можно вспомнить в части замены, с \1, \2, \3, и т.д.
  • , Таким образом, здесь, найдите \(.*("\)\(.*,\)\(.*\)).
    • Группа фиксации 1: .*(". Получение с начала к чему-либо, что заканчивается ("
    • Группа фиксации 2: .*,. От № 1, получение [до 1 111].
    • Группа фиксации 3: .*. Получение до (но не включая) ).
  • Тогда замена группами фиксации и дополнительным форматированием \1\3: \2\3).
8
ответ дан 17 November 2019 в 19:24

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

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