Это строго cut
метод.Предполагается, что ваш вывод всегда будет в этом формате.Как уже упоминалось, версия sed
(или awk
), вероятно, будет более динамичной.
Основной частью этого является аргумент -d
(разделитель) и аргумент -f
(поле).-f
может указывать одно поле или диапазон полей, разделенных указанным разделителем (я считаю, что вкладки используются по умолчанию).
Если ваши выходные данные находятся в файле с именем output.txt, вы можете использовать этот маленькийскрипт.
line1="$(head -1 output.txt | cut -d ' ' -f1-5)"
line2="$(tail -1 output.txt | cut -d ' ' -f1-4) $(tail -1 output.txt | cut -d '|' -f2 | cut -d "]" -f1)"
echo "$line1"
echo "$line2"
Если ваш вывод хранится в переменной, называемой output, вы можете использовать этот скрипт с переменной, отправляемой в качестве параметра, подобного ./script.sh "$output"
arg="$1"
line1="$(echo "$arg" | head -1 | cut -d ' ' -f1-5)"
line2="$(echo "$arg" | tail -1 | cut -d ' ' -f1-4) $(echo "$arg" | tail -1 | cut -d '|' -f2 | cut -d "]" -f1)"
echo "$line1"
echo "$line2"
Output:
IP 10.10.10.1 > 20.20.20.1: ICMP
IP 10.10.10.1.17441 > 20.20.20.1.22: tcp