这是 bash 脚本的一部分,我想对不以数字结尾的每一行做一些事情。我不知道如何引用每行的最后一个字符。
if lastchar != [0-9]
awk blahblahblah
else
awk blagblag
做过滤器awk:
awk '/[0-9]$/{ blahblahblah } !/[0-9]$/ {blagblag}'
#!/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
=~是 in 的运算regex符bash
在大多数情况下,我喜欢这种情况:
case "$line" in
*[0-9]) awk blahblahblah ;;
*) awk blagblag ;;
esac
但是,如果您无论如何都调用 awk,那么纯粹的 awk 答案可能是最好的。(除非您有未表明需要完成的步骤。)
其他答案都没有明确提到这一点:
我不知道如何引用每行的最后一个字符。
Aregular expression匹配模式:line ends in number可以使用[0-9]$[match any between 0and 9,后跟end-of-line( $is the end-of-line anchor)] 构造。
的锚点beginning-of-line是^。