各行の前に、その行のスラッシュ数を示す数字を追加したいと思います。
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
スクリプトの本文に到達する前にすべての作業を行います。情報を抽出するだけです。