10
A
回答
31
SED方式
$ echo '(1 2 3 4 5 6 7)' | sed 's/^.\(.*\).$/\1/'
1 2 3 4 5 6 7
awk的方式
$ echo '(1 2 3 4 5 6 7)' | awk '{print substr($0, 2, length($0) - 2)}'
1 2 3 4 5 6 7
POSIX sh的方式
$ var='(1 2 3 4 5 6 7)'; var="${var#?}"; var="${var%?}"; echo "$var"
1 2 3 4 5 6 7
bash的方式
$ var='(1 2 3 4 5 6 7)'; echo "${var:1: -1}"
1 2 3 4 5 6 7
如果您使用bash
,則使用bash方式。
如果不是,則更喜歡posix-sh方式。它比裝載sed
或awk
要快。
除此之外,您還可能正在進行其他文本處理,您可以將其與此結合使用,因此根據腳本的其餘部分,您最終可能會使用sed
或awk
。
爲什麼不這項工作?
sed '..' s_res.temp > s_res.temp
?
這不起作用,因爲重定向>
將在讀取文件之前截斷文件。 爲了解決這個問題,你有一些選擇:
你真正想要做的是編輯文件。
sed
是一個流編輯器不是文件編輯器。
ed
雖然,是一個文件編輯器(也是標準的!)。因此,使用ed
:$ printf '%s\n' "%s/^.\(.*\).$/\1/" "." "wq" | ed s_res.temp
使用臨時文件,然後
mv
它來替換舊的。$ sed 's/^.\(.*\).$/\1/' s_res.temp > s_res.temp.temp $ mv s_res.temp.temp s_res.temp
使用
sed
-i
選項。這僅與GNU-sed的工作,如-i
是不 POSIX和GNU-只:$ sed -i 's/^.\(.*\).$/\1/' s_res.temp
濫用殼(不推薦真的):
$ (rm test; sed 's/XXX/printf/' > test) < test
在Mac OS X(最新版本10.12 - Sierra)bash
被卡住到版本3.2.57
,這是相當古老。人們總是可以使用brew
安裝bash
並獲得版本4.x
,其中包括上述工作所需的替換。
有bash的版本和相應的變化的集合,在bash-hackers wiki
0
而且還編了一個Perl方式:
perl -pe 's/^.|.$//g'
1
從給定的字符串中刪除第一個和最後一個字符,我喜歡此sed
:
sed -e 's/^.//' -e 's/.$//'
# ^^ ^^
# first char last char
參見一個例子:
sed -e 's/^.//' -e 's/.$//' <<< "(1 2 3 4 5 6 7)"
1 2 3 4 5 6 7
相關問題
- 1. 字符串的第一個字符和最後一個字符
- 2. 刪除字符串中的最後一個字符和第一個字符
- 3. 從C字符串中剝離第一個字符和最後一個字符
- 4. cout:最後一個字符串覆蓋第一個字符串
- 5. jQuery給定字符的第一個和最後一個字符
- 6. BASH - 簡單的第一個字符和最後一個字符
- 7. PHP中去掉一個字符的最後出現後字符串中的字符
- 8. 第一個&後去掉其餘的查詢字符串
- 9. 試圖去掉一個字符串
- 10. before_save,去掉一個字符串
- 11. 帶字符串中第一個和最後一個字符的返回範圍
- 12. 如何從字符串中刪除第一個和最後一個字符
- 13. 通過第一個和最後一個字符刪除一部分字符串?
- 14. 在字符串的第一個和最後一個位置插入字符
- 15. 如何創建子字符串,當我知道C#字符串中的第一個和最後一個字符?
- 16. SQL去掉空格,非數字和第二個字符的字符串從
- 17. 最後一個字符串
- 18. 如何用此字符串中的兩個不同字符替換第一個和最後一個字符「{0}」
- 19. 顯示來自PHP中字符串的第一個和最後五個字符
- 20. 字符串中最後一個數字
- 21. 去掉一個字符串中符號的替代方法
- 22. C - 從另一個字符串中減去一個字符串
- 23. 需要從一個字符串去掉空格和字母
- 24. 剝字符串的第一個字符
- 25. 刪除字符串中最後一個空格後的最後一個字符
- 26. 基於字符串中的第一個字符和最後一個字符的Python排序
- 27. 替換兩個字符串的第一個字符和最後一個字符的任務
- 28. 如何從一個字符串去掉一段文字
- 29. 我想之前的第一個字符和最後一個字符之後
- 30. 的Java:替換字符串的最後一個字符和字符串
太棒了!非常感謝!!!!! – user1508893
我喜歡使用'sed'。但有一個問題,爲什麼這不起作用? 'sed's/^。\(。* \)。$/\ 1 /'s_res.temp> s_res.temp'? – user1508893
,因爲重定向會在讀取之前截斷文件。我會爲此更新我的答案。 – c00kiemon5ter