Это, наверное, легко, и что-то не устраивает меня и мою нехватку кофе прямо сейчас. У меня есть файл с несколькими строками, которые начинаются с табуляции, а затем слова 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