11
我有一些變量$a
。這個變量有非打印字符(回車^ M)。從bash變量中刪除非打印字符
>echo $a
some words for compgen
>a+="END"
>echo $a
ENDe words for compgen
我該如何刪除該字符? 我知道echo "$a"
顯示正確。但對我而言這不是一個解決方案。
我有一些變量$a
。這個變量有非打印字符(回車^ M)。從bash變量中刪除非打印字符
>echo $a
some words for compgen
>a+="END"
>echo $a
ENDe words for compgen
我該如何刪除該字符? 我知道echo "$a"
顯示正確。但對我而言這不是一個解決方案。
你可以使用tr
:
tr -dc '[[:print:]]' <<< "$var"
將從$var
刪除非打印字符。
$ foo=$'abc\rdef'
$ echo "$foo"
def
$ tr -dc '[[:print:]]' <<< "$foo"
abcdef
$ foo=$(tr -dc '[[:print:]]' <<< "$foo")
$ echo "$foo"
abcdef
要刪除剛剛從a
後回車,使用
a=${a%$'\r'}
*請注意:*這也將刪除變音等諸多實際可打印字符。 – Chiru
通過https://alvinalexander.com/blog/post/linux-unix/how-remove-non-printable-ascii-characters-file-unix進行調整,我得到了更好的結果:'tr -cd'\ 11 \ 12 \ 15 \ 40- \ 176'' – qneill