awkから文字列変数をコピーする

awkから文字列変数をコピーする

各行の前に、その行のスラッシュ数を示す数字を追加したいと思います。

awk '{ l=$0; gsub("[^/]","",l); print length(l),l }' 

l=$0参照として割り当てられているように見えるため、機能しません。串はどうしますかdup

標準のUNIXツールを使用してこれを行うより良い方法はありますか?デフォルトでは、ファイルパスのリストを深さ(スラッシュ数)でソートしたいと思います。

ベストアンサー1

いいえ。awk常に参照ではなく値として割り当ててください。

これ右スピンドル変数の割り当ては表現するで式はawk常に値を返します。変数をコピーするには、その値を新しい変数に割り当てるだけです。影響元の変数。

存在する:

$ echo 1 | awk '{l=$0; sub("1","2",l); print l, $0}'
2 1

l値のみが変更され、$0値は変更されません。


質問に記載されているとおり、次の操作を行います。

awk -F '/' '{print NF-1, $0}' <file

解析を行う必要はありません。awkスクリプトの本文に到達する前にすべての作業を行います。情報を抽出するだけです。

おすすめ記事