最初の単語と最後の単語に一致する文字列からテキストを抽出したいと思います。
文字列はパスです。
/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の答えを使いたいです。