2017-01-18 12 views
1

こんにちはへの出力は、netstatの3リストエコー私は、このようなスクリプトシェル持って一人一人:私はそのような出力を持つことができますどのようにbashシェル:3列

#!/bin/bash 
netstatport80=`netstat -an|grep :80 |awk '!/:8080/'|awk '!/:8081/' |awk '{print $5}'|cut -d":" -f1|sort|uniq -c|sort -rn| grep -v "0.0.0.0"` 

netstatport443=`netstat -an|grep :443 |awk '!/:8080/'|awk '{print $5}'|cut -d":" -f1|sort|uniq -c|sort -rn| grep -v "0.0.0.0"` 

netstatESTA=`netstat -an|grep ESTA |awk '!/:8080/'|awk '{print $5}'|cut -d":" -f1|sort|uniq -c|sort -rn| grep -v "0.0.0.0"` 

echo ' 
List IP request port 80: List IP request port 443: List IP request ESTA: 
'$netstatport80'   '$netstatport443'   '$netstatESTA' 

' 

List IP request port 80: List IP request port 443: List IP request ESTA: 
123.x.x.x     183.x.x.x     153.x.x.x 
193.x.x.x     123.x.x.x     164.x.x.x 
130.x.x.x     103.x.x.x     101.x.x.x 
187.x.x.x     173.x.x.x     185.x.x.x 

感謝をあなたのすべての助け!

答えて

0

pasteは、それが列に複数のファイルを結合します、あなたの必要性のための標準的なツールである:

$ echo """A 
> a 
> a 
> a""" > A.txt 

$ echo """B 
> b 
> b""" > B.txt 

$ echo """C 
> c 
> c 
> c 
> c 
> c""" > C.txt 

$ paste A.txt B.txt C.txt 
AAAA BB  C 
a  b  c 
a  b  c 
a    c 
a    c 
a    c 
       c 
       c 

あなたがファイルにあなたのフィルタnetstatコマンドの出力を書き込む必要がある、またはあなたが使用できるように、それがファイルで動作します匿名パイプ:

paste <(echo "List IP request port 80:"; echo "$netstatport80") <(echo "List IP request port 443:"; echo "$netstatport443") <(echo "List IP request ESTA:"; echo "$netstatESTA") 

異なる列のサイズは、フォーマットを壊した場合は、列間の区切り文字を指定するpaste-dオプションを使用することができ、その後、REF特定のサイズの列を切り捨てるprで試してみてください(前のバージョンの私の回答を参照してください)。


編集:古い回答prを使用してください。これは過度であり、あまり知られていません。

あなたがprを使用することができように-mオプション「マージ」ルックス:

$ echo """A 
> a 
> a 
> a""" > A.txt 

$ echo """B 
> b 
> b""" > B.txt 

$ echo """C 
> c 
> c 
> c 
> c 
> c""" > C.txt 

$ pr -mT A.txt B.txt C.txt 
A      B      C 
a      b      c 
a      b      c 
a            c 
               c 
               c 

prは、あなたの質問を研究しながら、私はthis SO answerで知ったページャで、その-mフラグがあなたの必要性に応答し、それが-Tオプションは無効ですページの書式設定(ヘッダー、フッター、さらに多分?)
あなたの代わりに変数を使用してのファイルにあなたのフィルタnetstatコマンドの出力をリダイレクトする必要がありますので、それはあなたが匿名のパイプを気にする場合を除き、ファイルからの入力を取る:あなたは非常に多くの

pr -mT <(echo "List IP request port 80:"; echo "$netstatport80") <(echo "List IP request port 443:"; echo "$netstatport443") <(echo "List IP request ESTA:"; echo "$netstatESTA") 
+0

おかげで、i」ができますあなたの答えのためのボタンの投票を参照してください+1 – ncc

+0

@ nccのheh?それは変だ。あなたはそれを答えとして受け入れることはできないと思いますか?さて、誰かを助けたことの満足でやります;) – Aaron

+2

(もっと一般的なツール)['paste'(1)](http://www.unix.com/man-page/linux/1/paste /)。 'pr'と' paste'は同じパッケージからのものであり、ほとんどのシステムで利用できるはずです。しかし、 'paste'はこの操作を主な目的とするツールです。 – anishsane

関連する問題