С sed:
echo -e "192.168.0.25,Up,()\n1.2.3.4,Up,(host.domain.com)" |
sed 's/()/None/g;s/[()]//g'
192.168.0.25,Up,None
1.2.3.4,Up,host.domain.com
Вот awk-программа:
BEGIN {FS=","}
$3 ~ /\(\)/ { printf ($1","$2",None\n"); next }
$3 ~ /\(.+\)/ {
gsub ("\\(", "")
gsub ("\\)", "")
}
{ printf ($0"\n") }
назовите его с
echo -e "1.8.0.5,Up,()\n1.2.3.4,Up,(host.d.com)" | awk -f ip.awk
например.
Вместо выполнения echo $results
сделать echo "$results"
.
Обновление:
Различие между этими 2 то, что в 1-м случае echo
получает много параметров, и в 2-м случае это получает только один параметр. Это вызвано тем, что подстановка переменных происходит перед парсингом параметра.
Попробуйте это, пример в списках zenity, он считал результат find
, и генерируйте массив, затем перейдите к zenity:
#!/bin/bash
List=()
while IFS= read -d $'\0' -r file ; do
List=("${List[@]}" "$file")
done < <(find . -iname '*.mp4' -print0)
zenity --list --column "Item" "${List[@]}"