如果行的最后一个字符是[0-9]

时间:2013-02-22 17:43:31

标签: regex bash

这是bash脚本的一部分 我想对每个不以数字结尾的行做点什么。 我不知道如何引用每一行的最后一个字符。

if lastchar != [0-9]
     awk blahblahblah
else
     awk blagblag

4 个答案:

答案 0 :(得分:3)

awk

中进行过滤
 awk '/[0-9]$/{ blahblahblah } !/[0-9]$/ {blagblag}'

答案 1 :(得分:2)

#!/bin/bash

while read line; do
    [[ $line =~ [0-9]$ ]] || awk blah
done < file.txt

或者:

#!/bin/bash

while read line; do
    if [[ $line =~ [0-9]$ ]]; then
        awk blah
    else
        awk anotherblah
    fi
done < file.txt

=~regex

bash的运算符

答案 2 :(得分:1)

在大多数情况下,我喜欢这样的情况:

case "$line" in
    *[0-9]) awk blahblahblah ;;
    *) awk blagblag ;;
esac

但是如果你正在调用awk,那么纯awk答案可能是最好的。 (除非你有步骤,否则你没有表明需要完成。)

答案 3 :(得分:0)

其他答案都没有明确提到这一点:

  

我不知道如何引用每行的最后一个字符。

匹配模式的regular expressionline ends in number可以使用[0-9]$构建[匹配09之间的任何内容,然后是{{1 (end-of-line$)]。

end-of-line anchor的锚点是beginning-of-line