Соединение строк между фигурными скобками

Стрелка вверх будет проходить по командам, начиная с последней. Я рекомендую вам использовать это с командами, которые были запущены относительно недавно, чтобы вам не пришлось сходить с ума со стрелкой вверх.

Вы также можете использовать:

CTRL +r

После этого начните вводить команду, и она появится в соответствии с вашим вводом. Затем вы можете либо нажать ESCAPE, чтобы получить его в приглашении, не выполняя его, либо вы можете выполнить его с помощью клавиши Enter, если хотите.

0
27.04.2020, 23:29
2 ответа

Попробуйте

$ awk '
/^ *$/          {next
                }
/cat.*{/        {while (! /}/)  {getline X
                                 $0 = $0 X
                                }
                }
1
' file
header {
category1 (a) {field1 : value1 ;field2 : value2 ;...fieldn : valuen ;}
new cat1 (b) {newfield1 : newvalue1 ;newfield2 : newvalue2 ;....newfieldn : newvaluen ;}
...
}
2
19.03.2021, 02:25

С GNU awk для multi -char RS и RT это сделает часть посередине:

$ awk -v RS='[^\n]+{[^{}]+}' '{$0=RT; $1=$1} RT' file
category1 (a) { field1 : value1 ; field2 : value2 ;... fieldn : valuen ; }
new cat1 (b) { newfield1 : newvalue1 ; newfield2 : newvalue2 ;.... newfieldn : newvaluen ; }

Печать первой и последней строк так же проста, как начало -1 и хвост -1:

$ head -1 file; gawk -v RS='[^\n]+{[^{}]+}' '{$0=RT; $1=$1} RT' file; tail -1 file
header {
category1 (a) { field1 : value1 ; field2 : value2 ;... fieldn : valuen ; }
new cat1 (b) { newfield1 : newvalue1 ; newfield2 : newvalue2 ;.... newfieldn : newvaluen ; }
}

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

1
19.03.2021, 02:25

Теги

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