Linux中使用sed替换多个字符
我在Linux中使用sed替换多个字符,linux,bash,sed,Linux,Bash,Sed,我在Linux中有一个变量,如下所示。这不是一个有效的变量,我刚才创建它是为了测试如何用一些新字符替换字符 table=123~!@#$%^&*()+|}{:"?><-=[]\;',./ 在Linux中如何实现这一点?将其传输到sed,并用下划线替换任何非^字母数字[:alnum://code> sed 's/[^[:alnum:]]/_/g' 在您的代码中,这看起来像: table1=$(echo table | sed 's/[^[:alnum:]]/_/g') 通
Linux
中有一个变量,如下所示。这不是一个有效的变量,我刚才创建它是为了测试如何用一些新字符替换字符
table=123~!@#$%^&*()+|}{:"?><-=[]\;',./
在Linux中如何实现这一点?将其传输到
sed
,并用下划线替换任何非^
字母数字[:alnum://code>
sed 's/[^[:alnum:]]/_/g'
在您的代码中,这看起来像:
table1=$(echo table | sed 's/[^[:alnum:]]/_/g')
通过管道将其连接到sed
,并用下划线替换任何非^
字母数字[:alnum:][/code>
sed 's/[^[:alnum:]]/_/g'
在您的代码中,这看起来像:
table1=$(echo table | sed 's/[^[:alnum:]]/_/g')
与tr相同
tr -c '[:alnum:]' _ <file
tr-c'[:alnum:][up>与tr相同
tr -c '[:alnum:]' _ <file
tr-c'[:alnum:]['修复了反斜杠。在过去的两天里,我在windows和linux之间切换的次数太多了,现在我把正反斜杠都搞混了。这有点像地狱。您的命令对(
,)
,$
,*
和其他字符不起作用。例如,如果我的表名是pd$123
,我得到的结果是pd
notpd_123
修复了反斜杠。在过去的两天里,我在windows和linux之间切换的次数太多了,现在我把正反斜杠都搞混了。这有点像地狱。您的命令对(
,)
,$
,*
和其他字符不起作用。例如,如果我的表名是pd$123
,我得到的结果是pd
notpd_123
我在表后得到一个额外的
。我试着像table1=$(echo$table | tr-c'[:alnum:'')
echo
添加一个新行,它也会被转换。您可以设置echo-n
来消除这种情况。TI已更改为echo-n
,但对于$
*
这不会替换字符,例如,如果我的表名是pd$123
,我得到的结果是pd
而不是pd_123
对于特殊字符bash
干扰,它扩展为$123
,很可能没有分配给任何对象。您需要单引号将要隐藏的字符串从bash
中引用。我将在表后获得一个额外的。
。我试着像table1=$(echo$table | tr-c'[:alnum:'')
echo
添加一个新行,它也会被转换。您可以设置echo-n
来消除这种情况。TI已更改为echo-n
,但对于$
*
这不会替换字符,例如,如果我的表名是pd$123
,我得到的结果是pd
而不是pd_123
对于特殊字符bash
干扰,它扩展为$123
,很可能没有分配给任何对象。您需要单引号将字符串隐藏在bash
中。