4

我需要从包含一些字段的变量中找到最后一列。我需要写一些类似的东西:

    if [ #the last column = "R" ];
    then
    value=`echo "'$value'"`
    fi

可能吗?

4

4 回答 4

9

awk你可以试试:

awk '$NF=="R"' <<< "$var"

测试:

$ var="this is a var with last as R"
$ awk '$NF=="R"' <<< "$var"
this is a var with last as R
$ var1="This should not be printed"
$ awk '$NF=="R"' <<< "$var1"
$
于 2013-06-13T12:56:06.087 回答
3

条件可以是:

if [[ $value == *' 'R ]]
then
    echo $value
fi

不需要外部语言,例如awk.

于 2013-06-13T13:18:24.667 回答
2

使用=~二元运算符:

$ var="Some arbitrary string ending in R"
$ unset value
$ [[ "$var" =~ $'R$' ]] && value=${var}
$ echo $value
Some arbitrary string ending in R
$ var="Some arbitrary string ending in Q"
$ unset value
$ [[ "$var" =~ $'R$' ]] && value=${var}
$ echo $value
于 2013-06-13T13:15:17.503 回答
1

假设用空格分隔的更通用的代码:

case $var in
  (*\ R) printf "%s\n" "$var"
esac

或者:

if [ "${var##* }" = R ]; then
  printf "%s\n" "$var"
fi
于 2013-06-13T16:31:21.920 回答