2017-10-09 9 views
0

UPDATE: 今、私はこれに似て処理するためのシンプルなファイル、持っている:はバッシュで変数にはawk、sedの出力を設定し

127.0.0.1 25 127.0.0.1 
127.0.0.1 25 127.0.0.1 
127.0.0.1 32828 127.0.0.1 
127.0.0.1 32830 127.0.0.1 
127.0.0.1 32906 127.0.0.1 
127.0.0.1 32908 127.0.0.1 
127.0.0.1 32984 127.0.0.1 

(最初の列ip_local、第2の列port_localと最後の列をip_foreign)

私がしなければならないことは、awk出力を変数に送ることだけです。私は2つの列を持つファイルを処理bashスクリプトを持っている私が書くために管理 コードはこれですが、私はまだ、テキストファイルを処理するために問題を抱えている...

#!/bin/sh 
for i in `cat DEV0_IPsListSep.txt`; 
do 
ip_local=$(awk '{print $1}' $i); 
port_local=$(awk '{print $2}' $i); 
ip_foreign=$(awk '{print $3}' $i); 
if [$port_local < 3200] || [$ip_foreign != 127.0.0.1] || [$ip_foreign != 
192.168.1.1] 
then 
echo $ip_foreign >> IPFinalList.txt; 
fi 
done 

。最初の列はローカルIPアドレス、もう1つは外部アドレスの1つです。

例:

127.0.0.1:25 127.0.0.1:33862 
127.0.0.1:25 127.0.0.1:36498 
127.0.0.1:25 127.0.0.1:37338 
127.0.0.1:25 127.0.0.1:37410 
127.0.0.1:25 127.0.0.1:38320 
127.0.0.1:25 127.0.0.1:39428 
127.0.0.1:25 127.0.0.1:39514 
127.0.0.1:25 127.0.0.1:39768 
127.0.0.1:25 127.0.0.1:39846 
127.0.0.1:25 127.0.0.1:40376 

私は、IPアドレスとポートを分離するために、私のカスタム変数にSEDとawkのコマンドの出力を割り当てるためのスクリプトをしたいと思います。

私は、スクリプトを作成しようとしましたが、それでも構文エラーを受け取る...単一のawkプロセス(最適化された溶液)で

#!/bin/sh 

for i in `IPslist.txt`; 

ipLocal=$(awk '{print $1}' | sed -e 's/:.*//' $i) 
portLocal=$(awk '{print $1}' | sed -e 's/.*://' $i) 
ipForeign=$(awk '{print $2}' | sed -e 's/:.*//' $i) 
portForeign=$(awk '{print $2}' | sed -e 's/.*://' $i) 

if [ $portLocal < 3200 ] || [ $ipForeign != 127.0.0.1 ] || [ 
$ipForeign != 192.168.1.1 ] 

then 

echo $ipForeign >> IPFinalList.txt 

fi 

答えて

0

awk -F':|[[:space:]]+' '$2<3200 || $3!= 127.0.0.1 || $3!= 192.168.1.1' IPslist.txt > IPFinalList.txt 
+0

こんにちは、ローマ、私はあなたの助けに感謝! これが私の問題の解決策であるかどうかはわかりません。このawkコマンドの出力は、ソースファイルと同じです。私の場合、最初の列のすべてのIPを印刷するのは興味深いでしょう。 – Dandelion

+0

@Dandelion、それは明白です:if [$ portLocal <3200] || [$ ipForeign!= 127.0.0.1] || [ $ ipForeign!= 192.168.1.1] 'すべての入力行、つまりあなたの現在の入力行をすべてあなたの条件に合わせてカバーします。それ以外の場合は、条件を定義する間違いをした – RomanPerekhrest

+0

OK!わかった。しかし、あなたのawkコマンドでは、 ":"区切り記号でも、私は間違った出力を得続けます。例127.0.0.1 25 127.0.0.1(最初のカラムはローカルアドレスIP、2番目のカラムはローカルポート、3番目のカラムは外部IP)、私はまだすべてを分けて新しいファイルを取得しようとしました。私が望むIPリストを取得できません(新しいファイルにはIPリストと元のファイルのようなポートがすべて表示されます)。 – Dandelion

関連する問題