には、私は現在、変数にコマンドライン出力を保存するbashスクリプトを持っています。最後のコロン(:
)の後ろのすべてを抽出する正規表現を実行したいと思います。正規表現コマンドライン出力のbashの
これは私のコードです:
line="$(command line)"
echo "$line" | awk '/[^:]+$/'
これは、残念ながら動作しません。どのように修正する必要がありますか?
には、私は現在、変数にコマンドライン出力を保存するbashスクリプトを持っています。最後のコロン(:
)の後ろのすべてを抽出する正規表現を実行したいと思います。正規表現コマンドライン出力のbashの
これは私のコードです:
line="$(command line)"
echo "$line" | awk '/[^:]+$/'
これは、残念ながら動作しません。どのように修正する必要がありますか?
line="root:x:0:0:root:/root:/bin/bash"
echo "${line/*:/}"
出力:GNUのbashのと正規表現で
/bin/bash
:
line="root:x:0:0:root:/root:/bin/bash"
[[ $line =~ ([^:]*)$ ]] && echo "${BASH_REMATCH[1]}"
出力:
/bin/bash
かを指定するには-fオプションでのawkを使用することができます「:」フィールドセパレータとして。
は、現在のレコードのフィールドの数を指し、NFを使用し、最後の1つを出力することができるので、$ NFを印刷すると、最後の後のすべてのものを印刷手段に「:」。
あなたのコマンドは次のようになります -
line="$(echo $PATH)"
echo $line | awk -F: '{print $NF}'
echo $PATH
が含まれている出力を持つ任意のコマンドの例である ":"
代替: 'echo" $ {line ## *:} "' - https://www.gnu.org/software/bash/manual/html_node/Shell-Parameter-Expansion.html#Shell-Parameter-Expansion – melpomene
鉱山に「bad substitution」というエラーがあります – acbh