it-swarm-ja.com

$()の配管コマンド

これは私が実行しようとしているシェルスクリプトの例ですが、grepさ​​れた結果を出力する代わりに、文字列全体を出力します。 $()にいるときにパイプすることはできませんか?

i="the cat is a crazy"; Word=$( echo $i | grep cat); echo $Word;
2
Jeremy

走っただけですか

$ echo $i | grep cat
> the cat is a crazy

マニュアルより

Grep print lines matching a pattern

使いたい-

-o, --only-matching
Print only the matched (non-empty) parts of a matching line, with each such part on a separate output line.

$ i="the cat is a crazy"; Word=$( echo $i | grep -o cat ); echo $Word;
> cat
1
Matt Clark

あなたが欲しいgrep -o行から1つの単語だけを取得します。 grepのデフォルトの動作は、一致が見つかった行全体を出力することです。

0
Spiff