使用bash脚本解析字符串以获取最后一项

时间:2011-03-10 17:07:14

标签: bash string sed

我有一个包含多行格式的文件:

Item A               62.7         97.9              9.0
Item A B C           54.2         98.4             10.0
Another Item A       51.0         98.8              7.0
Another Item A--B--C 57.0         98.8              1.0

我想编写一个bash脚本,它将获取每行的所有最后值,(例如9.0,10.0,7.0和1.0)。

我遇到的问题是我无法使用cut -d" " -f 4,因为项目名称中有不同数量的空格。此外,在使用sed时,我不能使用“超过2个空格”作为分隔符,因为有时项目名称和第二列之间只有一个空格(如示例中的最后一行,C和5)。

我想也许我可以从最后解析每一行,但我不确定这是否可行。任何帮助将不胜感激,因为我不太熟悉bash脚本。

谢谢

3 个答案:

答案 0 :(得分:3)

如果你不介意最后一个额外的逗号,你可以这样做:

 awk '{$1=$1;print $NF}' ORS="," ./infile

答案 1 :(得分:2)

从最后解析这条线将是一个很好的方法。您可以使用sed -e 's/^.* //'

答案 2 :(得分:1)

如果您想要分隔的最后一项,您可以随时撤销分隔列表的第一项撤消。

echo ($LINE) | rev | cut -d" " -f1 | rev