从Bash中的字符串中删除回车和制表符转义序列

从Bash中的字符串中删除回车和制表符转义序列,bash,tr,Bash,Tr,假设我有以下字符串: Your name is\nBobby\tBlahck\r\r 如何删除字符“\n、\t、\r”。字符串字面上看起来是这样的,它不包含制表符或新行。他们只是角色 当我尝试 echo "Your name is\nBobby\tBlahck\r\r" | tr -d '\t' tr假设我正在尝试删除制表符,因此它不起作用,并打印出完全相同的字符串。关于如何移除它们有什么想法吗?我对sed也有同样的问题 谢谢,这是因为字符串中没有任何制表符。它后面有一个反斜杠t,但没有制表

假设我有以下字符串:

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'

$ echo "Your name is\nBobby\tBlahck\r\r" | sed -E 's,\\t|\\r|\\n,,g'
Your name isBobbyBlahck
还有另一个答案

sed-e的/\\[[a-z]*///g'

$ echo "Your name is\nBobby\tBlahck\r\r" | sed -E 's,\\t|\\r|\\n,,g'
Your name isBobbyBlahck


-E
在OSX上;否则将其替换为
-r

使用字符组检查“\”后面的内容:

echo "Your name is\nBobby\tBlahck\r\r" | sed -r 's/\\[nrt]/ /g'

将选项
-e
添加到
echo
或使用
sed
进行搜索和替换。Err。这些不是“原始”制表符或换行符,而是制表符和换行符转义序列。原始字符可能是文字制表符或换行符。这毫无意义地复杂
[t]
t
完全相同,
[\\\\]
与\\完全相同。您的答案相当于sed-e's/\\t//g'-e's/\\n//g'-e's/\\r//g'@authprivate,您尝试过Ewan的解决方案吗?工作完美
sed-e's/\\t//g'-e's/\\n//g'-e's/\\r//g'@authprivate,不一定非功能性的东西才是错误的答案。例如,它可能会变得不必要的复杂和难以阅读;这也让情况变得糟糕。幸运的是,这很容易修复——“编辑”按钮就在那里。@charlesduff编辑了bro。。但我的意思是,它起作用了,所以不需要否决投票,你可以给我留言,感谢你的努力,感谢它没有出现在这里——这是一个问题;因此,在给定的一段时间后,实际上不允许在未经编辑的情况下撤回投票。