Как я могу заставить awk печатать и соответствия и несоответствия?

так как Вы, вероятно, желаете быстрый ответ, вот решение

PS1=$'\
%F{063}%1\
~\
%f\
%(1v.%F{099}%1v %f.)\
%F{063}\
%#\
%f '

но обратите внимание на то, что Вы не можете прокомментировать в строке

4
29.06.2012, 07:27
2 ответа

Для цвета необходимо указать фактический символ ESC (не завершенная форма \e).. значение является шестнадцатеричным числом \x1B или восьмеричный \033. Следующие сценарии окрашивают тире - и распечатайте все входные строки

awk '/orange/{gsub(/cowmilk/,"cow\x1B[1;34m-\x1B[0mmilk")} {print}' "$file"

sed '/orange/{s/cowmilk/cow\x1B[1;34m-\x1B[0mmilk/g}' "$file"
8
27.01.2020, 20:47
  • 1
    , большой!Спасибо. Я не понял просто sed, мог сделать это также. –  Ken Oh 29.06.2012, 19:20

Для печати каждой строки после изменения только некоторых добавьте отдельное условие, которое всегда оценивает к истинному, как (1):

awk '/orange/{gsub("cow", "cow~")} 1' "$file"

Вы могли также иметь {print} явно:

awk '/orange/{gsub("cow", "cow~")} {print}' "$file"

Помните, что каждый awk оператор состоит из условия и пункта оператора:

condition {statements}

Но каждый из них является дополнительным, если Вы не включаете {statements}, затем {print} используется. Если Вы не включаете condition, затем 1 используется.

5
27.01.2020, 20:47

Теги

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