从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。。但我的意思是,它起作用了,所以不需要否决投票,你可以给我留言,感谢你的努力,感谢它没有出现在这里——这是一个问题;因此,在给定的一段时间后,实际上不允许在未经编辑的情况下撤回投票。