从 Bash 中的字符串中删除回车符 return 和制表符转义序列
Removing carriage return and tab escape sequences from string in Bash
假设我有这个字符串:
Your name is\nBobby\tBlahck\r\r
如何删除字符“\n, \t, \r”。该字符串字面上看起来像这样,它不包含制表符或换行符。它们只是字符。
当我尝试时
echo "Your name is\nBobby\tBlahck\r\r" | tr -d '\t'
tr 假定我正在尝试删除制表符,因此它不起作用并打印出相同的字符串。关于如何删除它们的任何想法?我对 sed 也有同样的问题。
谢谢
那是因为字符串中没有任何制表符。它后面有一个反斜杠 t
但没有制表符:
$ echo "Your name is\nBobby\tBlahck\r\r" | tr -d '\t'
Your name is\nBobby\tBlahck\r\r
此字符串中有制表符,tr
将其删除:
$ echo $'Your name is\nBobby\tBlahck\r\r'
Your name is
Bobby Blahck
$ echo $'Your name is\nBobby\tBlahck\r\r' | tr -d '\t'
Your name is
BobbyBlahck
如果您想要 bash 字符串中的特殊字符,请使用 `$'...' 来创建它们。
sed -e 's/[\\][t]//g' -e 's/[\\][n]//g' -e 's/[\\][r]//g'
对
的另一个回答
sed -e 's/\[[a-z]]*//g'
$ echo "Your name is\nBobby\tBlahck\r\r" | sed -E 's,\t|\r|\n,,g'
Your name isBobbyBlahck
或
$ echo "Your name is\nBobby\tBlahck\r\r" | sed -e 's,\[trn],,g'
Your name isBobbyBlahck
-E
在 OS X 上;否则将其替换为 -r
。
使用字符组检查'\'后面的内容:
echo "Your name is\nBobby\tBlahck\r\r" | sed -r 's/\[nrt]/ /g'
假设我有这个字符串:
Your name is\nBobby\tBlahck\r\r
如何删除字符“\n, \t, \r”。该字符串字面上看起来像这样,它不包含制表符或换行符。它们只是字符。
当我尝试时
echo "Your name is\nBobby\tBlahck\r\r" | tr -d '\t'
tr 假定我正在尝试删除制表符,因此它不起作用并打印出相同的字符串。关于如何删除它们的任何想法?我对 sed 也有同样的问题。
谢谢
那是因为字符串中没有任何制表符。它后面有一个反斜杠 t
但没有制表符:
$ echo "Your name is\nBobby\tBlahck\r\r" | tr -d '\t'
Your name is\nBobby\tBlahck\r\r
此字符串中有制表符,tr
将其删除:
$ echo $'Your name is\nBobby\tBlahck\r\r'
Your name is
Bobby Blahck
$ echo $'Your name is\nBobby\tBlahck\r\r' | tr -d '\t'
Your name is
BobbyBlahck
如果您想要 bash 字符串中的特殊字符,请使用 `$'...' 来创建它们。
sed -e 's/[\\][t]//g' -e 's/[\\][n]//g' -e 's/[\\][r]//g'
对
的另一个回答sed -e 's/\[[a-z]]*//g'
$ echo "Your name is\nBobby\tBlahck\r\r" | sed -E 's,\t|\r|\n,,g'
Your name isBobbyBlahck
或
$ echo "Your name is\nBobby\tBlahck\r\r" | sed -e 's,\[trn],,g'
Your name isBobbyBlahck
-E
在 OS X 上;否则将其替换为 -r
。
使用字符组检查'\'后面的内容:
echo "Your name is\nBobby\tBlahck\r\r" | sed -r 's/\[nrt]/ /g'