[英]Problem in using Sed to remove leading and trailing spaces
我使用以下代碼從文件A.txt的所有行中刪除前導和尾隨空格
sed 's/^[ \t]*//;s/[ \t]*$//' ./A.txt > ./B.txt
問題出現在開頭或結尾有的位置。 所以說例如,以字符串“timezone”開頭的原始行變為“imezone”
你能告訴我這里發生了什么嗎? 如果有一個已知的問題解決方案。
提前致謝。
某些舊版本的sed不理解C風格的轉義字符,例如\\ t,並將其視為兩個字符,'\\'和't'。 您可以使用文字制表符來避免此問題 - 如果您直接在shell中鍵入此字符,請鍵入Ctrl+V Tab
。
另一種選擇,使用空白字符類,如果你的各種sed不支持\\s
:
sed 's/^[[:space:]]*//;s/[[:space:]]*$//'
如果你只使用空白字符類,你可能會有更好的運氣:
sed -e 's/^\s*//' -e 's/\s*$//' A.txt > B.txt
較新版本的sed了解\\ t但舊版本可能沒有。 你可能最好用文字標簽取代\\ t(CTRL-V會給你那個)
你在什么系統上使用什么版本的sed? (sed - GNU sed的版本)
呆子
awk '{gsub(/^[[:space:]]+|[[:space:]]+$/,"")}1' file
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.