stdinを介したsedは期待どおりに機能しません。

stdinを介したsedは期待どおりに機能しません。

ファイルからgrepする行があり、引用符内の値のみを抽出しようとしています。

$db_name                = "blah";

私はこのパイプラインを使って解析しています。

| awk '{print $NF}' | tr -d \'\" | sed  -r 's/.$//'

しかし、これは次のような結果をもたらすようです。

blah;

しかし、私はsed注文が最後の文字を削除したいと思います。私もsed -r使ってみましたが、sed -e効果はないようです。

それぞれの場合にのみ削除してくださいので、試してみましたが、;まだsed 's/;//'正規表現が機能しない理由を知りたいです。

どんなアイデアがありますか?

ベストアンサー1

真珠:

| awk '{print $NF}' | tr -d \'\" | perl -lpe 'chop'

幸せ:

| awk '{print $NF}' | tr -d \'\" | raku -pe '.=chop'

入力例:

echo '$db_name                = "blah";'

サンプル出力(2つのコード例):

blah

https://perldoc.perl.org/functions/chop
https://docs.raku.org/routine/chop

おすすめ記事