如果最后一列等于“R”那么......有可能吗?在unix中

时间:2013-06-13 12:33:10

标签: unix if-statement awk ksh equals-operator

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

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

有可能吗?

4 个答案:

答案 0 :(得分: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"
$

答案 1 :(得分:3)

条件可以是:

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

无需使用外语,例如awk

答案 2 :(得分: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

答案 3 :(得分:1)

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

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

或者:

if [ "${var##* }" = R ]; then
  printf "%s\n" "$var"
fi