Распечатать части файла, используя awk - PullRequest
0 голосов
/ 02 ноября 2019

У меня есть несколько условий для того, что я хочу напечатать (пропустите привет, который включен в часть, которую я хотел бы распечатать, распечатать из \ k {f} в \ l {k}, из \ word {g} в \ word2{g}, напечатайте строку, начинающуюся с \ hello2, и напечатайте часть между \ b и \ bf - есть проблема: в \ bf} есть}, которая не должна быть напечатана):

    awk '
/\\hello/{
  next
}
/\\k\{f\}|\\word\{g\}|\\b/{
  found=1
}
found;
/\\l\{f\}|\\word2\{g\}|\\bf/{
  found=""
}
/\\hello2/
' file.txt

Я быхотел бы добавить условие для \ bf, чтобы он был один в строке. Как это сделать, пожалуйста?

file.txt:

text
text
\hello2
456
565
\word{g}
s
\hello
\word2{g}
\k{f}
fdsfd
fgs
\l{f}
text
\b
7
\hello
\bf}
text

Вывод сейчас:

\word{g}
s
\word2{g}
\k{f}
fdsfd
fgs
\l{f}
\b
7
\bf}

Желаемый вывод:

\word{g}
s
\word2{g}
\k{f}
fdsfd
fgs
\l{f}
\b
7
\bf

Этот вопрос относится к: этот вопрос

1 Ответ

1 голос
/ 02 ноября 2019

Добавить условие для замены \ bf} на \ bf

    awk '
/\\hello/{
  next
}
/\\k\{f\}|\\word\{g\}|\\b/{
  found=1
}
# Fix BF lines
/\\bf}/ { $0 = "\\bf" }
# 

found;
/\\l\{f\}|\\word2\{g\}|\\bf/{
  found=""
}
/\\hello2/
' file.txt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...