shの文字列から既知の部分文字列を切り取る方法は? たとえば、私は文字列"http://www.myserver.org/very/very/long/path/mystring"
の式"http://www.myserver.org/very/very/long/path/"
が知られています。どうすれば "ミストリング"を得ることができますか?既知の部分文字列shを切り捨てる
ありがとうございました。
shの文字列から既知の部分文字列を切り取る方法は? たとえば、私は文字列"http://www.myserver.org/very/very/long/path/mystring"
の式"http://www.myserver.org/very/very/long/path/"
が知られています。どうすれば "ミストリング"を得ることができますか?既知の部分文字列shを切り捨てる
ありがとうございました。
など。 perlを使用して:
echo "http://www.myserver.org/very/very/long/path/mystring" | perl -pe 's|^http://www.myserver.org/very/very/long/path/(.*)$|\1|'
などの。 sedを使用:
echo "http://www.myserver.org/very/very/long/path/mystring" | sed 's|^http://www.myserver.org/very/very/long/path/\(.*\)$|\1|'
などの。検索文字列が変数に格納されている場合、ここではvariable
という名前になります。変数を展開するには、二重引用符を使用します。 man dash
で
S is the variable-name
## remove largest prefix pattern
*/ upto the last slash
がさらに読書のために、検索/ binの下でテスト
echo "http://www.myserver.org/very/very/long/path/mystring" | sed "s|^${variable}\(.*\)$|\1|"
/dash
$ S="http://www.myserver.org/very/very/long/path/mystring" && echo ${S##*/}
mystring
"##" いくつかのより多くのイラスト:
$ S="/mystring/" ; echo ${S##*/}
$ S="/mystring" ; echo ${S##*/}
mystring
$ S="mystring" ; echo ${S##*/}
mystring
私はsedに行ってしまいましたが、原則が適用されます... – brice
良い点は、sedスニペットも追加されました。 – simonnordberg
式の前後に二重引用符を使用すると、変数が展開されます。例えば。 'sed" s |^$ {shorturl} \(。* \)$ | \ 1 | "'のようになります。答えも更新されました。 – simonnordberg