linux删除最后一个字符串,Bash删除字符串中的第一个和最后一个字符
問(wèn)題描述
我有一個(gè)這樣的字符串:
|abcdefg|
我想要得到一個(gè)新的字符串(如string2)與原始字符串調(diào)用沒(méi)有兩個(gè)|在開始和結(jié)束時(shí)
所以我會(huì)有這個(gè)
abcdefg
在bash中可能嗎?
最佳解決方法
你可以做
string="|abcdefg|"
string2=${string#"|"}
string2=${string2%"|"}
echo $string2
或者如果你的字符串長(zhǎng)度不變,你可以做
string="|abcdefg|"
string2=${string:1:7}
echo $string2
此外,這應(yīng)該工作
echo "|abcdefg|" | cut -d "|" -f 2
另外這個(gè)
echo "|abcdefg|" | sed 's/^|\(.*\)|$/\1/'
次佳解決方法
這是一個(gè)獨(dú)立于字符串長(zhǎng)度(bash)的解決方案:
string="|abcdefg|"
echo "${string:1:${#string}-2}"
第三種解決方法
在這里列出的幾個(gè)帖子看起來(lái)最簡(jiǎn)單的方法是:
string="|abcdefg|"
echo ${string:1:-1}
編輯:工程與bash 4.2 Ubuntu的;不能用bash 4.1在centOS上工作
第四種方法
另一個(gè):
string="|abcdefg|"
echo "${string//|/}"
第五種方法
另一種方式與頭&尾巴:
$ echo -n "|abcdefg|" | tail -c +2 | head -c -1
abcdefg
第六種方法
您也可以使用sed刪除|不只是引用符號(hào)本身,而是使用位置引用,如下所示:
$ echo "|abcdefg|" | sed 's:^.\(.*\).$:\1:'
abcdefg
如果’:’是分隔符(你可以用/或者不是在查詢中的任何字符替換它們,任何跟在s后面的符號(hào)都會(huì)這樣做)這里^(caret)表示輸入字符串的開頭,$(dollar)表示在結(jié)束。這個(gè)。 (點(diǎn))它在插入符號(hào)之后,并且在美元符號(hào)代表單個(gè)字符之前。換句話說(shuō),我們正在刪除第一個(gè)和最后一個(gè)字符。請(qǐng)記住,即使|也會(huì)刪除任何字符它不存在于字符串中。
EX:
$ echo "abcdefg" | sed 's:^.\(.*\).$:\1:'
bcdef
參考資料
與50位技術(shù)專家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的linux删除最后一个字符串,Bash删除字符串中的第一个和最后一个字符的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 笔记本电脑linux系统下载,给笔记本电
- 下一篇: linux操作系统项目化教程课后答案,完