$ echo "Watermelons and cucumbers" | cut -d ' ' -f 3
cucumbers
-d ' '
cut
に伝えます スペースで分割します。 -f 3
3 番目の列を選択します。
awk
も使用できます 、これはすでにスペースに基づいて分割を行い、列を $1
として使用できるようにします 、 $2
、…
$ echo "Watermelons and cucumbers" | awk '{ print $3 }'
cucumbers
おそらく、@slhck によって既に指定されたオプションの 1 つを使用するでしょうが、これを行う方法がいくつかあります:
<オール>他の言語と同じように、配列を使用する:
$ foo=( $(SayStuff) )
$ echo ${foo[2]}
cucumbers
var=()
配列を宣言します $(command)
コマンドの出力を保存します。つまり、foo=( $(SayStuff) )
SayStuff
の出力を保存します 配列 foo
に そしてゆうおう echo
${foo[2]}
の 3 番目の要素です .
sed
$ SayStuff | sed 's/.* \(.*\)/\1/'
cucumbers
sed
コマンドは (s///
) 最後の単語ですべて。正規表現は、スペース (.*
) までのすべてに一致します ) 最後のスペースまですべてに一致し、最後の単語 (\(.*\)
をキャプチャします .単語はキャプチャされているため、\1
として参照できます。 .
より単純なバージョン:
$ SayStuff | sed 's/.* //'
cucumbers
バッシュ
$ foo=$(SayStuff); echo ${foo##* }
cucumbers
これは、bash の文字列操作機能を使用します。詳細については、こちらを参照してください。
もっとバッシュ
$ SayStuff | while read a b c; do echo $c; done
cucumbers
Perl ではもちろん、これを行う方法はたくさんあります:
$ SayStuff | perl -lane 'print $F[$#F]'
cucumber
-a
perl
になります awk
のように振る舞う 、空白で行を分割し、配列 @F
に保存します .次に、@F
の最後の要素を出力します ($#F
@F
の要素数 )。 -l
各 print
に改行を追加するよう perl に指示します ステートメント、-n
STDIN を 1 行ずつ処理し、-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
cucumbers
-o
を使用した grep と正規表現 一致した文字列のみを出力します。
$ 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 }'
きゅうり
awk
で NF は行のフィールド数なので $NF
行の最後のフィールドを意味します。