我正在尝试在一个以4个空格开头的文本文件中缩进行。
我已经尝试过这个命令但是这样可行,但是如何缩进仅以数字开头的行。
sed 's/^/ /' somefile
我已尝试过上面的命令,但它会缩进所有内容。
答案 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/'