2016-08-16 3 views
-5

のような複数の区切り文字でのawkを使用する方法これがawkを使用してファイルへの入力である場合、最後の列を抽出するコマンドは何ですか?これは、入力された場合は、ファイルへの() tと「」

testabc  Perf Agent data collector      (26748) Running 
midaemon Measurement Interface daemon      (26565) Running 
ttd   ARM registration daemon       (1779) Running 
alarm  Alarm generator         (26764) Running 
coda   Performance Core     COREXT    Stopped 
opcacta  Action Agent     AGENT,EA  (26635) Running 
opcle  Logfile Encapsulator   AGENT,EA  (26613) Running 
opcmona  Monitor Agent     AGENT,EA  (26620) Running 
opcmsga  Message Agent     AGENT,EA  (26597) Running 
opcmsgi  Message Interceptor    AGENT,EA  (26641) Running 
abcdccb  Communication Broker    CORE   (26571) Running 
ovcd   Control       CORE   (26567) Running 
ovconfd  Config and Deploy    COREXT  (26588) Running 
Message Agent is not buffering. 

すべてのヘルプははるかに高く評価されます。ほとんどのシステムにはインストールされていないので、「awk」だけが使用される必要があります。

答えて

0

あなたはrevがインストールされている場合、あなたはちょうどそのrevバック、それを使用し、最初の列を処理することができます。

rev < file | awk '{print $1}' | rev 

あなたはまた、AWKの代わりにcutを使用することができます。

rev < file | cut -d' ' -f1 | rev 

を私は通常、それは驚くほど速いです。

+0

レビは私たちのシステムにインストールされていません。考えは既にインストールされたコマンドを使用してスクリプトを書くことです –

3

これを試してください。

awk '{print $NF}' <YourFile> 

NFは:

awk '$0=$NF""' file 

最後のフィールドを持つレコード$NF$0と印刷を置き換え:AWKはあなたのレコード

0
awk -F' ' '{print $NF}' 

-F - delimiter(whitespace is the default) 
$NF - last column, $(NF-1), last but one column and so on 
+0

ありがとうAnudeep。 awkで複数のデリミタを使用したい場合は、助けてください。 –

+0

awk -F '[:;/=]' '{print $ 0}'のように指定することができます。上記の の区切り文字は ":、;、/、=" – anudeep

+0

は複数の区切り文字を使用しているときに以下のエラーが発生しています。 awk:1行目の近くに文法エラーがあります。 awk:1行目の近くに出て行きます。 OSはsolarisです。awk -F '[:; // =]' '{print $ 0}' –

0

内のフィールドの合計数を示します。

+0

あなたの '$ NF'が数値' 0'に評価されれば、これは動作しません。私がよく使ったよくある間違い: -/ – anishsane

+0

...空の行を切り取ることを意味します。あなたは正しい、 –

+1

空の行だけではない。あなたの行が 'Midaemon Measurement Interface daemon(26565)Running 0 'のようなものなら、それは印刷されません。 – anishsane

関連する問題