回答:
おそらく@slhckで既に指定されているオプションの1つを使用しますが、これを行う方法がいくつかあります。
他の言語の場合と同様に、配列を使用します。
$ foo=( $(SayStuff) )
$ echo ${foo[2]}
cucumbers
var=()、配列を宣言し$(command)、コマンドの出力を保存します。だから、foo=( $(SayStuff) )の出力記憶SayStuffアレイへのfoo及びyuouは、その後echoそれが有する第三の要素の${foo[2]}。
sed
$ SayStuff | sed 's/.* \(.*\)/\1/'
cucumbers
このsedコマンドはs///、すべてを最後の単語に置き換えます()。正規表現は、スペース(.*)までのあらゆるものと一致し、最後のスペースまでのすべてと一致し、最後の単語をキャプチャし(\(.*\)ます。単語はキャプチャされているので、それをとして参照できます\1。
より単純なバージョン:
$ SayStuff | sed 's/.* //'
cucumbersバッシュ
$ foo=$(SayStuff); echo ${foo##* }
cucumbers
これは、bashの文字列操作機能を使用します。詳細については、こちらを参照してください。
もっとbash
$ SayStuff | while read a b c; do echo $c; done
cucumbersPerl、もちろん、これを行うには多くの方法があります:
$ SayStuff | perl -lane 'print $F[$#F]'
cucumber
-a作るには、perlのように振る舞うawk空白で行を分割し、配列に保存し、@F。次に、@F($#Fがの要素数です@F)の最後の要素を出力します。-lそれぞれに改行を追加するためのperlを伝えprint、声明-nそれはラインでSTDINラインを処理しなければならないことと-e、それはコマンドラインで指定したスクリプトを実行する必要があること。
$ SayStuff | perl -pe 's/.* //'
cucumber
オプションについては上で説明しましたが、最後のスペースまですべてを削除して印刷しています(-p)。
$ perl -le 'print $ARGV[$#ARGV]' $(SayStuff)
cucumbers
ここではWatermelons and cucumbers引数として渡します。perlは@ARG配列に保存するため、の最後の要素を出力し@ARGます。
策略。これはsed、スペースを改行に変換しtail、最後の行のみを印刷するために使用します。
$ SayStuff | sed 's/ /\n/g' | tail -n 1
cucumbersgrepおよび正規表現-o。これを使用すると、一致した文字列のみが出力されます。
$ SayStuff | grep -Po '\w+$'
cucumbers不正行為
$ SayStuff | grep -o cucumbers
cucumbersここにもう少し説明があります:
Usage: cut OPTION... [FILE]...
Print selected parts of lines from each FILE to standard output.
-d, --delimiter=DELIM
use DELIM instead of TAB for field delimiter
-f, --fields=LIST
select only these fields; also print any line that contains no
delimiter character, unless the -s option is specified
したがって、3番目のフィールドが必要であり、スペース ''で区切られている場合は、
$ echo "Watermelons and cucumbers" | cut -d ' ' -f 3
cucumbers
あなたがしたい場合LASTフィールドを、あなたは、おそらく使用する必要がありますAWK。
この場合、次のようになります。
$ echo "スイカとキュウリ" | awk '{print $ NF}'
きゅうり
ではawkNF行のフィールド数がそうである$NF行の最後のフィールドを意味します。
cut、可変数のスペースは処理しないことに注意してawkください。