Unix 从变量中修剪垃圾字符
我的shell脚本中有一个变量,它按照我的期望工作。 但是当我使用这个变量作为文件名时,我得到??在字符串的开头。如何修剪垃圾角色Unix 从变量中修剪垃圾字符,unix,shell,Unix,Shell,我的shell脚本中有一个变量,它按照我的期望工作。 但是当我使用这个变量作为文件名时,我得到??在字符串的开头。如何修剪垃圾角色 我使用$(some命令)创建此变量。有多种方法可以修复变量,但首先我们需要知道要删除什么(即,some命令的输出) 例如,如果它总是在前面放两个你不需要的字符,你可以使用: x=$(someCommand | cut -c3-) x=$(someCommand | tr -d '[\000-\037\177]') 如果要去除输出中0x20到0x7e范围之外的所有
我使用$(some命令)创建此变量。有多种方法可以修复变量,但首先我们需要知道要删除什么(即,
some命令的输出)
例如,如果它总是在前面放两个你不需要的字符,你可以使用:
x=$(someCommand | cut -c3-)
x=$(someCommand | tr -d '[\000-\037\177]')
如果要去除输出中0x20到0x7e范围之外的所有字符(ASCII
中的不可打印字符),可以使用:
x=$(someCommand | cut -c3-)
x=$(someCommand | tr -d '[\000-\037\177]')
理想情况下,您可以运行someCommand | od-xcb
来获得它输出的实际十六进制转储。然后我们可以进一步帮助你
更新:
根据您的新数据(输出为
\n\nSomeName27-Oct-2009-14-33.sql.zip
),您应该能够使用sed'/^$/d'
删除空行
pax> echo '
SomeName27-Oct-2009-14-33.sql.zip' | od -xcb
0000000 0a0a 6f53 656d 614e 656d 3732 4f2d 7463
\n \n S o m e N a m e 2 7 - O c t
012 012 123 157 155 145 116 141 155 145 062 067 055 117 143 164
0000020 322d 3030 2d39 3431 332d 2e33 7173 2e6c
- 2 0 0 9 - 1 4 - 3 3 . s q l .
055 062 060 060 071 055 061 064 055 063 063 056 163 161 154 056
0000040 697a 0a70
z i p \n
172 151 160 012
0000044
pax> echo '
SomeName27-Oct-2009-14-33.sql.zip' | sed '/^$/d' | od -xcb
0000000 6f53 656d 614e 656d 3732 4f2d 7463 322d
S o m e N a m e 2 7 - O c t - 2
123 157 155 145 116 141 155 145 062 067 055 117 143 164 055 062
0000020 3030 2d39 3431 332d 2e33 7173 2e6c 697a
0 0 9 - 1 4 - 3 3 . s q l . z i
060 060 071 055 061 064 055 063 063 056 163 161 154 056 172 151
0000040 0a70
p \n
160 012
0000042
这是假设那些
\n
标记实际上是两个换行符({'\n','\n'}
)。如果(出于某些奇怪的原因)它们是四个字符{'\\'、'n'、'\\'、'n'}
,请使用cut-c5-
。我建议的一种简单方法是使用带有-d选项的tr命令来删除
filename=
$filename | tr-d'?'
filename=echo$filename | sed's/\?//g
\n\n用户名27-Oct-2009-14-33.sql.zip#我想删除前两行字符。sed'/^$/d'#谢谢。我还有一个问题。我如何删除两个单词之间的空格?一些名称27-Oct-2009-14-33.sql.zipUse“sed's///g'”,以删除所有空格(即前两个“/”字符之间的空格,以防不明显)。您可以将其与其他sed结合起来,如下所示:“sed-e'/^$/d'-e's///g'”。