Назад | Перейти на главную страницу

добавить в конец строки sed / awk

Это, наверное, легко, и что-то не устраивает меня и мою нехватку кофе прямо сейчас. У меня есть файл с несколькими строками, которые начинаются с табуляции, а затем слова GROUP something {

Некоторые из этих строк по какой-либо причине опускают фигурную скобку при определенных условиях. Быстрое решение - использовать sed / awk для добавления фигурной скобки к этой строке, но не к строкам, в которых скобка уже существует. Я на полпути, но, как вы можете видеть, это добавит открытую фигурную скобку к каждой строке, которая начинается с табуляции и GROUP.

sed '/[ \t]GROUP/ s/$/ {/' scst.conf.test > greg.scst.out

Вы можете попробовать это sed команда:

$ sed '/[ \t]GROUP/ s/{*$/ {/' scst.conf.test > greg.scst.out

Со следующим тестовым файлом как test.txt:

    GROUP blah {
    GROUP blah {
    GROUP blah
    GROUP blah {
    GROUP blah {
    GROUP blah {
    GROUP blah
    GROUP blah {
    GROUP blah {
    GROUP blah {
    GROUP blah {

Следующий сценарий sed делает свое дело:

sed -r 's/\tGROUP(.*)[^{]$/&{/' test.txt

Результат выглядит так:

    GROUP blah {
    GROUP blah {
    GROUP blah {
    GROUP blah {
    GROUP blah {
    GROUP blah {
    GROUP blah {
    GROUP blah {
    GROUP blah {
    GROUP blah {
    GROUP blah {

Это правильно? Он ищет строки, в которых есть символы табуляции-> ГРУППА, но нет {в конце. Заменяет его совпадающей строкой (это то, что делает &), а затем добавляет {.

Проверка GROUP something без { и обратная ссылка на него, а затем замена на \1 {.

sed 's|\([ \t]GROUP.*\)[^{]$|\1 {|' yourfile