GNU/Linux >> Linux の 問題 >  >> Linux

カットを使用して区切り文字にさらにスペースを指定する方法は?

実は awk 正確です 調べるべきツール:

ps axu | grep '[j]boss' | awk '{print $5}'

または、grep を捨てることができます awk以降は完全に 正規表現について知っている:

ps axu | awk '/[j]boss/ {print $5}'

しかし、何らかの奇妙な理由で、本当にできない場合は awk を使用 、最初にすべての空白を単一のスペースに折りたたむなど、他にも簡単にできることがあります:

ps axu | grep '[j]boss' | sed 's/\s\s*/ /g' | cut -d' ' -f5

その grep ところで、トリックは jboss のみを取得するための巧妙な方法です プロセスであり、grep jboss ではありません 1 つ (awk も同様) バリアントも同様です)。

grep プロセスにはリテラル grep [j]boss があります そのプロセス コマンドで、grep によってキャッチされません。 文字クラス [j] を探しているそれ自体 続いて boss .

これは | grep xyz | grep -v grep を回避するための気の利いた方法です 一部の人々が使用するパラダイム。


awk バージョンがおそらく最善の方法ですが、 cut を使用することもできます 最初に tr で繰り返しを絞り込む場合 :

ps axu | grep jbos[s] | tr -s ' ' | cut -d' ' -f5
#        ^^^^^^^^^^^^   ^^^^^^^^^   ^^^^^^^^^^^^^
#              |            |             |
#              |            |       get 5th field
#              |            |
#              |        squeeze spaces
#              |
#        avoid grep itself to appear in the list

これには tr -s コマンドを使用するのが好きです

 ps aux | tr -s [:blank:] | cut -d' ' -f3

これにより、すべての空白が 1 スペースに縮小されます。このように、スペースを区切り文字として使用するようにカットに指示することは、期待どおりに受け入れられます。


Linux
  1. Linuxgrepコマンドの使用方法

  2. 文字列にドットが含まれている場合に正確な単語をgrepする方法

  3. sshfs の鍵ファイルを指定するにはどうすればよいですか?

  1. 「カット」を使用して最後のフィールドを見つける方法

  2. インターネットへの接続に使用しているインターフェイスを確認するにはどうすればよいですか?

  3. bash スクリプトで unicode を grep する方法

  1. Linux – LinuxでIptablesを使用して、LAN上の特定のユーザーのインターネットアクセスを制限する方法は?

  2. 「猫」の出力で単語を強調表示する方法は??

  3. 実行中のコンテナのホスト名を指定するには?