一致する文字列の前のすべてを抽出します。

一致する文字列の前のすべてを抽出します。

私にはロープがあります。

hdfs://ussbssn01.us.xyz.com//data/ip/list/usa/

私が望むもの

hdfs://ussbssn01.us.xyz.com//

//awk、sedを試しましたが、一致する文字列が重複しており、期待した結果が得られませんでした。希望の結果を得る方法はありますか?

ベストアンサー1

最初の 2 つの文字列に一致する文字列を取得するには、次のようにします。

$ s=hdfs://ussbssn01.us.xyz.com//data/ip/list/usa/
$ echo "$s" | awk -F// '{print $1 FS $2 FS}'
hdfs://ussbssn01.us.xyz.com//

仕組み:

  • -F//

    これは awk に//フィールド区切り文字として使用するように指示します。

  • print $1 FS $2 FS

    これにより、awk に、最初のフィールド、フィールド区切り文字、2 番目のフィールド、その他のフィールド区切り文字を印刷するように指示します。

選ぶ

最後に一致する文字列を含むすべてを取得するには:

$ echo "$s" | awk -F// '{$NF=""} 1' OFS=//
hdfs://ussbssn01.us.xyz.com//

仕組み:

  • -F//

    これはawkに//フィールド区切り文字として使用するように指示します。入力する

  • $NF=""

    これはawkに最後のフィールドを空の文字列に置き換えるように指示します。

  • 1

    これはprint-the-recordのawkの秘密の略語です。

  • OFS=//

    これはawkに//フィールド区切り文字として使用するように指示します。出力

おすすめ記事