2

これは、数字で終わらない各行に何かをしたい bash スクリプトの一部です。各行の最後の文字を参照する方法がわかりません。

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

4 に答える 4

3

でフィルターを実行しawkます。

 awk '/[0-9]$/{ blahblahblah } !/[0-9]$/ {blagblag}'
于 2013-02-22T17:48:08.410 に答える
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

=~regexinの演算子ですbash

于 2013-02-22T17:46:08.987 に答える
1

私はほとんどの状況でこれのケースが好きです:

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

ただし、とにかく awk を呼び出す場合は、純粋な awk の回答がおそらく最適です。(実行する必要がある、示していない手順がある場合を除きます。)

于 2013-02-22T18:47:29.313 に答える
0

他の回答のどれもこれを明示的に言及していません:

各行の最後の文字を参照する方法がわかりません。

regular expressionパターンに一致するA : [との間の任意の一致に続いて(は)]line ends in numberを使用して構築できます。[0-9]$09end-of-line$end-of-line anchor

のアンカーはbeginning-of-lineです^

于 2013-02-23T05:40:55.810 に答える