如何提取 Bash 中有趣的输出

如何提取 Bash 中有趣的输出

我的命令输出如下:

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

我会用cutsed

将分隔符设置为冒号并选择第二个字段:

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}'

这将用作:分隔符,删除所有空格,并打印第二列。

相关内容