スペースを階層番号リストに変換する必要がありますが、これを達成するのは困難です。
これが私が求めているものです:
入力(表示):
Project #1
Subproject
Task
Project #2
Subproject
Task
Task
入力(生):
\tProject #1
\t\tSubproject
\t\t\tTask
\tProject #2
\t\tSubproject
\t\t\tTask
\t\t\tTask
希望の出力:
1: Project #1
1.1: Subproject
1.1.1: Task
2: Project #2
2.1: Subproject
2.1.1: Task
2.1.2: Task
ベストアンサー1
Perlが救出に来る!
perl -pe 'if (s/^\t(\t*)//) {
$n[ length $1 ]++;
splice @n, 1 + length $1;
}
print $1, join(".", @n), ": " ' -- file
s/^\t(\t+)//
前のタブを削除してキャプチャします(最初のタブを除く)$1
。- 配列は
@n
数値を格納するために使用されます。現在の深さに対応する数字は増加し++
、残りの数字は削除されます(新しい、あまりネストされていないセクションを開始した場合)。