我的命令输出如下:
File Size : 23 kB
File Size : 9.8 kB
File Size : 9 kB
File Size : 128 kB
File Size : 921.8 kB
如何从这个提取到这个:
23kB
9.8kB
9kB
128kB
921.8kB
我尝试使用 sed 命令
sed 's/^..................................//'
输出是
23 kB
9.8 kB
9 kB
128 kB
921.8 kB
至此,我对 sed 和 regex 的了解就结束了。该怎么做呢?
答案1
我会用cut
:sed
将分隔符设置为冒号并选择第二个字段:
cut -d ':' -f 2 file
输出:
23 kB
9.8 kB
9 kB
128 kB
921.8 kB
然后使用以下命令删除空格tr -d
:
cut -d ':' -f 2 file | tr -d ' '
输出:
23kB
9.8kB
9kB
128kB
921.8kB
答案2
您想要删除冒号之前的所有内容,并删除所有空格:
sed 's/.*://; s/ //g' file
第一个替换将.*:
(即,直到最后一个冒号的所有内容)替换为空。第二个替换将全局空格替换为空。
答案3
您可以链接单独的替换:
's/^.*: //; s/ //'
但解析这样的详细命令总是有点笨拙和不可靠。我建议使用 find 之类的东西(使用您需要的任何过滤器)并将其链接到 中stat
,如下所示:
find . -exec stat --printf="%s\n" {} +
请man stat
参阅有关输出的更多选项。
答案4
使用awk
:
awk -F\: '{gsub(/ /, ""); print $2}'
这将用作:
分隔符,删除所有空格,并打印第二列。