2016-07-19 10 views
1

awkを使用して、最後の列の後のテキストファイルに新しいデータ列を作成する。私の最後の列は、主にIPアドレスであるが、いくつかのテキスト行することができ、次のようになります。AWK:新しい列が正しく整列しない

192.168.50.25 
192.168.111.145 
Unknown 

私は新しい列を作成するために使用していますコマンドは次のとおりです。私は102548のためにgrepをしています

grep '102548' file | awk -v OFS='\t' '{print $0, "2018-10-22"}' 

理由私はawkがその文字列を含んでいる行で作業したいだけです。ここでは、コマンドからの私の出力は、次のとおりです。

限り左の列が、新しい列のレイアウトでは、整列し、ランダムではないが、常にこの形式を取りいただきましたように何韻や理由をしないように思わ
192.168.50.25 2018-10-22 
192.168.111.145   2018-10-22 
Unknown   2018-10-22 
172.16.15.145   2018-10-22 

2018-10-22 
      2018-10-22 
      2018-10-22 
    2018-10-22 
      2018-10-22 

"オーバーラップ"は常に同じであるようです。私はいつもこのような分離を得るために私のコマンドを構築することができますか?

192.168.50.25  2018-10-22 
192.168.111.145  2018-10-22 
Unknown    2018-10-22 
172.16.15.145  2018-10-22 

答えて

1

最初の列のいくつかの行のテキストは、最初のタブストップを越えて延び、他の行では表示されません。

あなたが視覚的に素敵な方法で並んで物事をしたい場合は、column -tを試してみてください。

$ awk '{print $0, "2018-10-22"}' file | column -t 
192.168.50.25 2018-10-22 
192.168.111.145 2018-10-22 
Unknown   2018-10-22 

上記のラインアップ空白に基づいて列を。タブだけで列を区切りたい場合は(列に空白を含めることができます)、次に試してみてください。

$ awk '{print $0, "2018-10-22"}' OFS='\t' file | column -s$'\t' -t 
192.168.50.25 2018-10-22 
192.168.111.145 2018-10-22 
Unknown   2018-10-22 
+1

Ah!コラムでした!私が必要とした正確な書式を得るためには、 "column -s $ '\ t' -t"を追加しなくてはなりませんでした。 – user53029

関連する問題