簡體   English   中英

使用Sed刪除前導和尾隨空格的問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM