использование awk для печати, если любые три переменные верны

Ваше использование «слова» является предложением (мне ), что вы могли бы использовать конструкции границы слова grep:

LIST="1,21,3,4"
SOURCE="2"
if echo "$LIST" | grep -q "\\<$SOURCE\\>"; then
  echo "matched";
else
  echo "no match";
fi
0
16.05.2021, 12:51
2 ответа
#!/bin/bash
read -p "enter the src ip:" srcip
read -p "enter the des ip:"  desip
read -p "enter the src port:" srcport


awk -v srcip="$srcip" -v desip="$desip" -v srcport="$srcport" '($2 == srcip||$4 == desip || $5 == srcport){print $0}' filename

Проверено, работает нормально

выход

введите src ip :.10 введите дес ip :.30 введите порт src :34

TCP.10 29.30 300

0
28.07.2021, 11:32

Не проверено:

awk -F',' -v pro="$protocol" -v sip="$srcip" -v dip="$dstip" -v sport="$srcport" -v dport="$dstport" '
    {
        c = 0
        c += (pro == "tcp")
        c += (sip == "10")
        c += (dip == "30")
        c += (sport == "4")
        c += (dport == "1")
    }
    c > 2
' test.txt

Сделайте это c > 2 { print $1,$2,$3,$4,$5,$6,$7 }, если вы действительно хотите напечатать только это подмножество полей, а не всю строку.

1
28.07.2021, 11:32

Теги

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