这是作为输入的数据文件。
1
2
2
979
data
raw
32j
23
32323
输出:
/* 1
/* 2
/* 2
/* 979
data
raw
/* 32j
/* 23
/* 32323
如何使用 sed 获得所需的输出?匹配模式的正则表达式是^[0-9]*。
答案1
我猜你想要的是注释掉以数字开头的行。这不是^[0-9]*
意味着,它将匹配所有内容,包括空行或根本没有数字的行,因为*
意味着“0 或更多”,因此它将匹配文件的每一行。
因此,要注释掉以数字开头的行,您可以使用:
$ sed '/^[0-9]/ s|^|/* |' file
/* 1
/* 2
/* 2
/* 979
data
raw
/* 32j
/* 23
/* 32323
或者:
$ sed -E 's|^([0-9])|/* \1|' file
/* 1
/* 2
/* 2
/* 979
data
raw
/* 32j
/* 23
/* 32323
答案2
awk '/^[0-9]/{$0="/* "$0}1' filename
/* 1
/* 2
/* 2
/* 979
data
raw
/* 32j
/* 23
/* 32323