1. ホーム
  2. linux

[解決済み】cutでdelimiterにさらにスペースを指定するには?

2022-04-22 15:42:40

質問

cutコマンドでフィールドデリミタを指定して、スペースを増やす方法はありますか?(" "+のような) ? 例えば、以下のような場合です。次の文字列で、私は値 '3744' に到達したい、私はどのようなフィールドデリミタを言うべきですか?

$ps axu | grep jboss

jboss     2574  0.0  0.0   3744  1092 ?        S    Aug17   0:00 /bin/sh /usr/java/jboss/bin/run.sh -c example.com -b 0.0.0.0

cut -d' ' は、スペース1つ分しかないので、私が欲しいものではありません。 awk は、私が求めているものでもないのですが、「カット」はどうすればいいのでしょうか?

ありがとうございます。

どのように解決するのですか?

実は awk まさに のようなツールです。

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

または grep というのは awk は正規表現について知っています。

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

しかし、もし、奇妙な理由で、あなたが本当に できない 使用 awk しかし、もっと簡単な方法もあります。例えば、すべての空白文字を最初に空白1文字にすることもできます。

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 というパラダイムを使う人がいます。