0

ディレクトリ名の一部を変数に保存して、ファイル名の先頭に追加できるようにしようとしています。

これは私がこれまでに持っているものです:

var=1
CH=`ls | awk '/[0-9]{2}(?=_.*)/ {if (NR=$var) print $0}'`
echo $CH

フォルダ名は のようになり01_Startupます。しかし、エコーは空白です。私はこれを理解することはできません。これがシェルスクリプトで可能かどうかは誰にもわかりませんか? | の順序とコマンドの組み合わせ方がよくわかりません。ありがとう。

木:

Benu-master
|
|--Chapter_02_Startup
|--|--01_Source_tree
|--|--02_Console
|--|--03_DEBUG

等々。

4

3 に答える 3

1

awkはサポートしていないPCREため、正の先読みは機能しません。また、そのようにbash変数を呼び出すことはできませんawk

あなたの要件から私が見ていることは、bash組み込みの文字列置換で満たすことができます。

$ var=01_Startup
$ echo "${var%_*}"
01

findディレクトリのリストを収集し、文字列置換を使用するために使用できます。

find . -type d | while read -r dir; do echo "$dir ---> ${dir%_*}"; done
于 2013-07-22T04:33:53.197 に答える
1

このようなもの?

for c in Chapter_*; do
    v=${c#Chapter_}
    v=${v%%_*}
    echo chapter $c has number $v   # more chapter-processing code here
done

余談ですが、outputの解析は避けlsてください。

于 2013-07-22T05:54:53.060 に答える