Вот чистое решение, которое сработало для меня. Войдите в любой сеанс tmux и-
$ kinit
$ aklog
$ VAR1=N
$ VAR2=X
$ awk -v a="$VAR1" -v b="$VAR2" '{ for (i=1; i<=NF; ++i) if ($i != a && $i != b) { print; next } }' file
hajn 32 ahnnd namm 5 543 asfn F
5739 dw 32eff Sfff 3 asd 3123 1
Здесь мы передаем значения $VAR1
и $VAR2
в наш короткий скрипт awk
и его переменные a
и b
, используя -v
в командной строке.
Внутри сценария awk
мы перебираем поля каждой строки, и если какое-либо поле отличается как от значения a
, так и от значения b
, мы печатаем всю строку и сразу же переходим к следующей строке..
Если ни одно поле не отличается от a
и b
, ничего не происходит (строка не печатается ).
Вы можете получить желаемые результаты, правильно выбрав регулярное выражение. Обратите внимание :, предполагая, что переменные оболочки имеют мягкие символы, то есть те, которые не интерпретируются как специальные регулярные выражения. В случае, если это не так, вы можете указать переменные в контексте \Q...\E
.
$ grep -P "(^|\s)(?!$VAR1(\s|\$))(?!$VAR2(\s|\$))" inp