file.txt
最も簡単な形式で、次の自動生成ファイルがあるとしますfile.txt
。
Source Destination Maximum To Maximum From Average Total Average To Average From
(192.168.1.1) (192.168.1.2) 202.89 Kbps 0 bps 645 bps 645 bps 0 bps
column
私はこのコマンドをいくつかのバリエーションで試しましたが、役に立ちませんでした。この出力を次のように作成するにはどうすればよいですか?
Source Destination Maximum To Maximum From Average Total Average To Average From
(192.168.1.1) (192.168.1.2) 202.89 Kbps 0 bps 645 bps 645 bps 0 bps
これを行う方法を知る必要があるようですが、空白を描いていますが、これまで期待どおりに機能している項目が見つかりませんでした。
編集する:以下の説明と回答はsed
元の例と完全に一致しています。 (私は実際には説明の解決策がより簡単でパイピングを含まないので好みますtr
。)つまり、両方の解決策は複数行ファイルでまったく同じパフォーマンスを発揮します。これには、file.txt
さまざまな長さの数百行のIPv4アドレスが含まれます。sed
これまでのところ、両方のソリューションは元のものよりも正確な結果を次のように返しますfile.txt
。
ソースファイル.txt:
Source Destination Maximum To Maximum From Average Total Average To Average From
(10.10.10.21) (192.168.123.122) 18.90 Kbps 0 bps 131 bps 131 bps 0 bps
(10.10.10.22) (192.168.123.122) 10.88 Kbps 0 bps 23 bps 23 bps 0 bps
(10.10.10.23) (192.168.123.123) 10.88 Kbps 0 bps 23 bps 23 bps 0 bps
(192.168.123.123) (192.52.168.123) 0 bps 22.84 Kbps 1.17 Kbps 0 bps 1.17 Kbps
(192.168.123.124) (192.52.168.123) 0 bps 10.87 Kbps 19 bps 0 bps 19 bps
更新されたfile.txt(これまで提案されたソリューションを使用した後):
Source Destination Maximum To Maximum From Average Total Average To Average From
(10.10.10.21) (192.168.123.122) 18.90 Kbps 0 bps 131 bps 131 bps 0 bps
(10.10.10.22) (192.168.123.122) 10.88 Kbps 0 bps 23 bps 23 bps 0 bps
(10.10.10.23) (192.168.123.123) 10.88 Kbps 0 bps 23 bps 23 bps 0 bps
(192.168.123.123) (192.52.168.123) 0 bps 22.84 Kbps 1.17 Kbps 0 bps 1.17 Kbps
(192.168.123.124) (192.52.168.123) 0 bps 10.87 Kbps 19 bps 0 bps 19 bps
このオフセット警告を解決するための更新されたソリューションはありますか?
ベストアンサー1
スクリプトはOPのサンプルデータに基づいています。
sed '
s/\s\s\+/:/g
s/\([a-z)]\)\s\([(0-9A]\)/\1:\2/g
' file.txt |
column -s: -t
- 見つけやすい区切り文字を変更して始めます(
\s
手順2以降)。:
- 2番目のステップでは、残りの可能な区切り文字を探します。
- 小文字と数字の間
- 後ろに
)
- 今後
A
- 列区切り文字を使用した文字列の書式設定
: