フォルダ内の個々のファイルには、さまざまなクライアント用の100を超えるファイアウォールルールがあります。
ファイル名が次のとおりであるとします。
1.wawa.com_firewall_rule
2.newa.com_firewall_rule
各ファイルには顧客のIPが含まれています。私にとって必要なのは、ファイルから各顧客のIPを抽出して、次の形式で単一の新しいファイルに追加することです。
wawa.com
192.168.1.1
newa.com
8.8.8.8
9.9.9.9
これでIPを抽出して新しいファイルに保存できるようになりました。ただし、すべてを1つのファイルに保存する必要があります。 (報告されているように) - 以下のコードを参照してください。
#!/bin/bash
cd /opt/zeus/zxtm/conf/rules/sba_filter/test
for f in *; do
#echo $f > hosts.txt
grep -E -o "([0-9]{1,3}[\.]){3}[0-9]{1,3}" "$f" > "$f.txt"
done
ベストアンサー1
仕事を維持してください。考えられる解決策は次のとおりです。
#!/bin/bash
cd /home/prova
for f in *; do
basename $f '_firewall_rule' >> output.txt
printf "\n" >> output.txt
grep -E -o "([0-9]{1,3}[\.]){3}[0-9]{1,3}" "$f" | while read -r line ; do
echo $line >> output.txt
printf "\n" >> output.txt
done
done
コメントで最適化の貢献を見る