缩进文本文件中以数字开头的行

时间:2017-08-10 22:49:15

标签: sed

我正在尝试在一个以4个空格开头的文本文件中缩进行。

我已经尝试过这个命令但是这样可行,但是如何缩进仅以数字开头的行。

sed  's/^/     /'  somefile

我已尝试过上面的命令,但它会缩进所有内容。

2 个答案:

答案 0 :(得分:3)

您可以添加过滤器以仅选择以数字开头的行, 在s///命令之前写:

sed -e '/^[0-9]/s/^/    /' somefile

根据您的评论,您的输入来自cat -n的输出, 它打印了编号的行,但这些行不是以数字开头,而是在左边有空格填充。 如果你想缩进行以零或多个空格后跟一个数字,那么你需要调整过滤器。 这只是插入*(空格和*):

的问题
sed -e '/^ *[0-9]/s/^/    /' somefile

答案 1 :(得分:0)

您可以尝试将数字之前的任何空格或制表符替换为四个空格,如下所示:

sed 's/^[ \t]*\([0-9]\+.*\)/    \1/' file

由于您的文件是cat -n的输出,因此您无需检查数字,因为无论如何所有行都将以数字开头,因此这也可能有效:

sed 's/^[ \t]*\(.*\)/    \1/'