2016-03-05 120 views
0

我已经使用shell中的命令sed删除除了我的字符串中的数字之外的所有内容。现在Sed创建副本

,我的字符串中包含其他数量及运行

sed 's/[^0-9]*//g' 

而不是三个0经过三个0,我现在有0 01和02

我怎样才能防止这样做,这样的sed我可以有三个0?字符串的

样本:

0  cat 
42  dog 
24  fish 
0  bird 
0  tiger 
5  fly 
+3

你能提供一个输入字符串样本吗? – MaxU

+0

更新了帖子。图像编号和它旁边的动物在一列中。 – Daeto

+0

所以你只想保持零? – MaxU

回答

3

现在我们知道,在从du实用程序输出文件名位数引起的问题(帽子的尖端Lars Fischer),只需使用cut来只提取第一列(其中包含感兴趣的数据,每个文件/子目录的大小以块为单位):

du -a "$var" | cut -f1 

du输出制表符分隔的数据,并且制表符也是cut的默认分隔符,因此只需要询问第一个字段(-f1)。


事后,您的问题与sed无关;您的样本数据并不代表您的实际数据。提问时始终值得创建MCVE (Minimal, Complete, and Verifiable Example)

+0

非常感谢这个技巧!傻傻的我,我没有意识到有些文件的名字中有数字! – Daeto

0

试试这个:

du -a "$var" | sed -e 's/ .*//' -e 's/[^0-9]*//g'