排除最后一个字段

Exclude the last-but-one field

如何排除或删除行中最后一个词之前的词:

示例:

var=1
echo "list $var M"

预计:

list 1M

不确定你的问题是什么,但是:

var=1
echo "list $var M"

给予

list 1 M

要获得 list 1M,请使用:

var=1
echo "list ${var}M"
list 1M

使用 {...} 确保 M 不是变量名的一部分。

由于您的问题和预期答案不匹配,我发布了 2 个答案。

1) To get output as indicated in question, 2) To remove 2nd last word

1. sed 's/ \(\w*$\)//'

用前面的 space 检查最后一个词 (\w*$)。替换相同,但没有 space.

输出:

$ echo "list $var M" | sed 's/ \(\w*$\)//'
list 1M

2. sed 's/\w* \(\w*$\)//'

检查最后 2 个词,仅替换为最后一个词。

输出:

$ echo "list $var M" | sed 's/\w* \(\w*$\)//'
list M