这是 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 0
and 9
,后跟end-of-line
( $
is the end-of-line anchor
)] 构造。
的锚点beginning-of-line
是^
。