AWKを使用せずに文字列の最後の列を取得する

AWKを使用せずに文字列の最後の列を取得する

sedと同じものを提供するためにor(フラグgrepなし)を使用できるかどうか疑問に思います。-Pawk '{print $6}'

iOS用のスクリプトを作成していますが、サードパーティのコマンド(たとえば)をインストールしたくありませんawk

  • grepこのフラグはiOSでもサポートされていないため、サポートされて-Pいませんperl-regexp
  • cutiOSのサードパーティのコマンドです(したがっていいえcut)。

ベストアンサー1

文字列がある場合変えるスクリプトで(質問のタイトルで述べたように)最後のフィールドを抽出したい場合は、次のことができます。

field=${string##* }

これは、文字列が$stringスペースで区切られていると仮定します(上記の変数置換でスペースを使用する区切り文字に変更)。変数置換は、指定された${variable##pattern}ものと一致する最長のプレフィックス文字列を削除します。$variablepattern

ファイルの場合、sed以下は各行のスペースで区切られた最後のフィールドを抽出します。

sed 's/^.*[[:space:]]//' data.in

最後の空白文字を含む各行のすべての項目を削除してこれを行います。[[:space:]]データでタブやスペースを区切り文字として使用しない場合は、最後の列の前の区切り文字と一致する正規表現に変更してください。

おすすめ記事