假设我有这样的文字:
Lorem ipsum Lorem ipsum
Lorem ipsum Lorem ipsum
1. Row1 Lorem ipsum Lorem ipsum
Lorem ipsum Lorem ipsum
1.1 Row 2 Lorem ipsum Lorem ipsum
Lorem ipsum Lorem ipsum
1.1.1 Row 3 Lorem ipsum Lorem ipsum
行首的数字只能由带点的“1”组成,可以到多级“1.1.1.1.1”等。 我想使用 sed 命令将那些带有数字的行作为目标,并在没有这些数字的情况下以三种结构打印它们,因此结果将是:
Row1 Lorem ipsum Lorem ipsum
Row 2 Lorem ipsum Lorem ipsum
Row 3 Lorem ipsum Lorem ipsum
我试过这个命令 sed -rn 's/1.|1.1|1.1.1/'$'\t/p' Book2.txt
但这不会以树结构打印它。我只能使用 sed 命令。
你能帮帮我吗?
最佳答案
这可能对你有用(GNU sed):
sed -nE '/^1\./{:a;s/^(\s*)1\.?/\1 /;ta;s/ //p}' file
将 1.
开头的行替换为每个 1.
或单个 1
的 2 个空格,然后将缩进减少 2 个空格并打印结果。
如果首选制表符,这 2 个空格可以替换为 \t
。
关于sed - 使用sed以树结构打印文本行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64683945/