假设我有这个字符串:
Your name is\nBobby\tBlahck\r\r
如何删除字符“\ n,\ t,\ r \ n”。字符串看起来像这样,它不包含制表符或新行。他们只是人物。
当我尝试
时echo "Your name is\nBobby\tBlahck\r\r" | tr -d '\t'
tr假设我正在尝试删除标签,因此它不起作用并打印出相同的字符串。有关如何删除它们的任何想法?我和sed有同样的问题。
由于
答案 0 :(得分:1)
这是因为字符串中没有任何制表符。它有一个反斜杠跟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字符串中使用特殊字符,请使用'$'...'来创建它们。
答案 1 :(得分:1)
$ 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
替换它。
答案 2 :(得分:1)
使用字符组检查' \'后面的内容:
echo "Your name is\nBobby\tBlahck\r\r" | sed -r 's/\\[nrt]/ /g'
答案 3 :(得分:-1)
sed -e 's/[\\\][t]//g' -e 's/[\\\][n]//g' -e 's/[\\\][r]//g'
另一个答案
sed -e 's/\\[[a-z]]*//g'