awkを使用すると発生する問題

awkを使用すると発生する問題

awkや他の方法を使用するのに役立ちますか?

入力ファイルには次の内容が含まれています。

PROD   192.168.100.25   Unix                       Active
PROD   192.168.100.26   Unix - Server              Active
DEV    192.168.100.27   windows Gateway            Active
TEST   192.168.100.28   Unix Test Server           Not Active
PROD   192.168.100.29   windows mail gateway       Active down 
PROD   192.168.100.30   Unix                       Active down

今awkを使用して列2と4を取得します。以下を参照してください。

awk '{print $2  $4}' Inputfile

結果 -

192.168.100.25   Active                       
192.168.100.26   -               
192.168.100.27   Gateway             
192.168.100.28   Test           
192.168.100.29   mail        
192.168.100.30   Active

予想される結果 -

192.168.100.25   Active                       
192.168.100.26   Active               
192.168.100.27   Active             
192.168.100.28   Not Active           
192.168.100.29   Active down        
192.168.100.30   Active down  

ベストアンサー1

デフォルトでは、AWK のフィールドはスペースで区切られます。空白がどれだけ多いかは関係ありませんので、次のファイルは同じ結果を提供します。

PROD   192.168.100.25   Unix   Active
PROD   192.168.100.26   Unix   -        Server   Active

この2行の4番目のフィールドは明らかにActivesumです-


これで、ファイル形式は実際には次のようになります。フィールドはタブで区切られ、その間にはスペースのみが含まれます。 SEに公開した後、タブは保持されないと思われます。

そうすれば、線はより似ているように見えます。

PROD<tab>192.168.100.26<tab>Unix - Server<tab><tab>Active

次のようにタブを区切り文字として使用するようにAWKに指示できます。

$ awk -F '\t+' '{print $2, $4}' file.txt
192.168.100.25 Active
192.168.100.26 Active

しかし、各フィールドの間にタブを置く方が一般的です。つまり、可変長データとうまく合わない。それからawk -F '\t'


列が実際に固定幅の場合は、次を使用してcut必要な部分を選択できます。ただし、この場合は文字を手動で計算する必要があります。

         1         2         3         4         5         6         7
1234567890123456789012345678901234567890123456789012345678901234567890
PROD   192.168.100.29   windows mail gateway       Active down 

上記の数で判断すると、次のように動作できます。

$ cut -c8-23,52-70 file-fixed.txt
192.168.100.25  Active
192.168.100.26  Active
192.168.100.27  Active
192.168.100.28  Not Active
192.168.100.29  Active down 
192.168.100.30  Active down

少なくとも、GNU AWKは固定幅フィールドもサポートしていますが、これについては深く調査していません。バラよりhttps://www.gnu.org/software/gawk/manual/html_node/Fixed-width-data.html

おすすめ記事