Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 使用正则表达式更改bash中的行_Regex_Linux_Bash_Command Line - Fatal编程技术网

Regex 使用正则表达式更改bash中的行

Regex 使用正则表达式更改bash中的行,regex,linux,bash,command-line,Regex,Linux,Bash,Command Line,我需要使用linux命令行替换一些文本: 我有一些文件: ------------------- line 1 line 2,2 line 3_4 ------------------- 我有一个局部解决方案: sed -i 's/line 1/my line 1/g' /my/file 这是可行的,但当我试图替换第2行和第3行时,它不起作用。我得到: ------------------- line 1 my line 2,2 my line 3_4 -------------------

我需要使用linux命令行替换一些文本:

我有一些文件:

-------------------
line 1
line 2,2
line 3_4
-------------------
我有一个局部解决方案:

sed -i 's/line 1/my line 1/g' /my/file
这是可行的,但当我试图替换第2行和第3行时,它不起作用。我得到:

-------------------
line 1
my line 2,2
my line 3_4
-------------------
我需要:

-------------------
line 1
my line 2
my line 3
-------------------

有没有一种简单的方法可以使用reg exp来修复此问题?

您可以使用此sed命令:

sed 's/^ *\(line [0-9]\+\).\+$/my \1/' file
line 1
my line 2
my line 3
如果要对此文件进行内联编辑,请使用:

sed -i.bak 's/^ *\(line [0-9]\+\).\+$/my \1/' file