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

Sed 在文本文件中缩进以数字开头的行,sed,Sed,我试图将文本文件中以数字开头的行缩进4个空格 我已经尝试过这个命令,但它可以工作,但是如何缩进只以数字开头的行呢 sed 's/^/ /' somefile 我尝试过上面的命令,但它会缩进所有内容。您可以添加一个过滤器,只选择以数字开头的行, 在s//命令之前写入: sed -e '/^[0-9]/s/^/ /' somefile 根据您的评论,您的输入来自cat-n的输出, 它打印编号的行,但行不是以编号开头,而是在左侧有空格填充。 如果要缩进以零个或多个空格开头并后跟数

我试图将文本文件中以数字开头的行缩进4个空格

我已经尝试过这个命令,但它可以工作,但是如何缩进只以数字开头的行呢

sed  's/^/     /'  somefile

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

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

sed -e '/^[0-9]/s/^/    /' somefile
根据您的评论,您的输入来自
cat-n
的输出, 它打印编号的行,但行不是以编号开头,而是在左侧有空格填充。 如果要缩进以零个或多个空格开头并后跟数字的行,则需要调整过滤器。 这只是插入
*
(空格和
*
)的问题:


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

sed 's/^[ \t]*\([0-9]\+.*\)/    \1/' file
由于您的文件是cat-n的输出,因此实际上不必检查数字,因为所有行都将以数字开头,因此这可能也适用:

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

这似乎没有做任何事情,似乎这是可行的,但没有一个编号的文件-这个例子已经张贴在我原来的问题。我有一个文件是用cat-n file>fileoutsed-e'/^[0-9]/s/^/'output13=works-1在0之前的空白创建的-9@AlexTomko您的要求似乎不完整:行以空格开头,后跟数字。我更新了我的答案来处理这个问题,但下次请小心在你的问题中包含所有要求。@AlexTomko你需要更多帮助吗?
sed 's/^[ \t]*\(.*\)/    \1/'