Парсинг строки Bash
Имеется код:
#!/bin/bash
inputfile=$1
while read LINE; do
ip=$(echo $LINE | awk -v rx='((25[0-5]|2[0-4][0-9]|[01]?[0-9]{1,2})\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]{1,2})' 'match($0,rx){print substr($0,RSTART,RLENGTH)}')
linewithoutip=$(echo $LINE | sed 's/$ip//')
echo $linewithoutip
done < $inputfile
Его задача - удалять IP из каждой строки файла, и выводить строки без ip в терминал. Почему-то удаления IP из строки не происходит.
Содержимое файла, который подаётся на вход:
10.10.10.10@log10:pass10
11.11.11.11@log11;pass11
12.12.12.12 log12:pass12
13.13.13.13 log13;pass13
log14:[email protected]
log15;[email protected]
log16:pass12 16.16.16.16
log17;pass13 17.17.17.17
Ответы (1 шт):
Автор решения: Владимир
→ Ссылка
Решением было заменить одинарные кавычки на двойные в строке:
linewithoutip=$(echo $LINE | sed 's/$ip//')
Должно получиться так:
linewithoutip=$(echo $LINE | sed "s/$ip//")