これは、数字で終わらない各行に何かをしたい 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
=~
regex
inの演算子ですbash
私はほとんどの状況でこれのケースが好きです:
case "$line" in
*[0-9]) awk blahblahblah ;;
*) awk blagblag ;;
esac
ただし、とにかく awk を呼び出す場合は、純粋な awk の回答がおそらく最適です。(実行する必要がある、示していない手順がある場合を除きます。)
他の回答のどれもこれを明示的に言及していません:
各行の最後の文字を参照する方法がわかりません。
regular expression
パターンに一致するA : [との間の任意の一致に続いて(は)]line ends in number
を使用して構築できます。[0-9]$
0
9
end-of-line
$
end-of-line anchor
のアンカーはbeginning-of-line
です^
。