Cree un archivo de hosts llamado hosts.txt
que contenga los hosts que desee. Luego ejecuta:
for i in $(cat hosts.txt); do for j in {1..4}; do rsync -hav -e ssh
--info=progress2
user@loggerserver:/xxx/xxxx/$i/logs/JVM_Name_$j/logs/messages.log
/cygdrive/d/xxx/xxxx/$i/JVM_Name_$j/messages.log; done; done
Puede cambiar los números entre llaves para que contengan el rango que desee.
Поскольку требовалось удалить только «частные» IP-адреса (10... ), регулярное выражение, заданное ender.qa, можно было уточнить до
sed -E '/T/s/T/:/1; s/,10\.([0-9]{1,3}.){2}[0-9]{1,3}//g' file
или, поскольку этот IP-адрес не будет содержать пробелов, даже короче:
sed -E '/T/s/T/:/1; s/,10\.[^ ]*//g' file
Похоже, вам нужны «данные до»:
2018-06-03T23:59:57.000Z 66.249.66.129,10.0.1.81 [03/Jun/2018:23:59:57 +0000]...
будет "данные после":
2018-06-03:23:59:57.000Z 66.249.66.129 [03/Jun/2018:23:59:57 +0000]...
Верно?
Если да:
cat logs.txt | sed '/T/s/T/:/1' | sed -e 's/,.*\[//g'
Кроме того, вам не нуженcat
:
sed '/T/s/T/:/1' logs.txt | sed -e 's/,.*\[/ \[/g'
По сути, вы удаляете любые символы (. *)между запятой (, )и левой скобкой ([), которую необходимо экранировать.
Если вы хотите удалить только IP-адрес
sed '/T/s/T/:/1' logs.txt | sed -re 's/,([0-9]{1,3}\.){3}[0-9]{1,3}//g'
ИЛИ
sed '/T/s/T/:/1' logs.txt | sed -e 's/,\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}//g'
Не не совсем то, что вы просили, но здесь показано как использоватьgrepcidr
для фильтрации (удаления)строк , содержащих IP-адреса в диапазоне частных адресов 10.0.0.0 -10.255.255.255 в файлеfile
:
grepcidr -v '10.0.0.0-10.255.255.255' file
То же самое, но с использованием синтаксиса сетевого блока CIDR:
grepcidr -v '10.0.0.0/8' file