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