最初と最後の文字列からテキストを抽出する

最初と最後の文字列からテキストを抽出する

最初の単語と最後の単語に一致する文字列からテキストを抽出したいと思います。

文字列はパスです。

/path/to/the/file/app.apk(randomcharacters)

テキストを抽出したいです。

/path/to/the/file/app.apk

このようなものを使用してください

sed '/\/path/.apk/'

答えとしてsedコマンドが必要です。

答え1

POSIX 文字列操作を使用できます。外部コマンドは必要ありませんsed

s='/path/to/the/file/app.apk(randomcharacters)'
echo "${s%.apk*}.apk"

出力

/path/to/the/file/app.apk

これは実際にあなたの」ランダムな文字「実際にはランダムではないため、文字列を含めません。.apkこの文字列を含めることができますが、パス(プレフィックス)には含まれていないことが保証されている場合%は置き換えることができます%%

答え2

パスが同じパターンに従う場合は、.apk(somerandomcharracters)パターンの後ろのすべての項目を交換して削除できます.apk。不要な文字を削除する方法は2つあります。

ソリューション1

sed "s/\(\.apk\).*/\1/g" <<< '/path/to/the/file/app.apk(characters)'

上記のコードの問題は、ディレクトリにパターンが含まれている場合、.apk出力.apk(randomchars)が期待したものと異なることです。

sed "s/\(\.apk\).*/\1/g" <<< '/path/to/the/file.apk/app.apk(characters)'
#This will print:
/path/to/the/file.apk

ソリューション2 上記の問題を回避するには、以下を使用する必要があります。

sed "s/\(.*\.apk\).*/\1/g" <<< '/path/to/the.apk212/file.apk12ll/app.apk(aa)dfd'
#This will print:
/path/to/the.apk212/file.apk12ll/app.apk

sed  "s/\(.*\.apk\).*/\1/g" <<< '/path/to/the/file/app.apk(aa)dfd'
#This will print 
/path/to/the/file/app.apk

さて、私はroaimaの答えを使いたいです。

関連情報