通过 sed 将以某个内容开头的行替换为其他内容

3 regex linux bash sed

我有一个大约 200 行的文档。其中之一有以下短语:

TCP_IN = "1" "2" "A" "B" "29001" "45000"
Run Code Online (Sandbox Code Playgroud)

我想用这一行替换整行:

TCP_IN = "22, 80, 443, 9000"
Run Code Online (Sandbox Code Playgroud)

我尝试了这些正则表达式操作来定位所需的短语及其后面的所有内容:

sed -i 's/^TCP_IN \= (.*)/TCP_IN \= "22, 80, 443, 9000"/' /etc/csf/csf.conf
sed -i 's/TCP_IN \= (.*)/TCP_IN \= "22, 80, 443, 9000"/' /etc/csf/csf.conf
Run Code Online (Sandbox Code Playgroud)

TCP_IN =我告诉计算机“定位我的短语及其后面的所有内容并将其替换为我给你的流”,我做错了什么?

Cyr*_*rus 5

sed 's/TCP_IN = "1" "2" "A" "B" "29001" "45000"/TCP_IN = "22, 80, 443, 9000"/' file
Run Code Online (Sandbox Code Playgroud)

或者

sed 's/TCP_IN = .*/TCP_IN = "22, 80, 443, 9000"/' file
Run Code Online (Sandbox Code Playgroud)

或者

sed 's/\(TCP_IN =\) .*/\1 "22, 80, 443, 9000"/' file
Run Code Online (Sandbox Code Playgroud)

或使用扩展正则表达式 ( -E)

sed -E 's/(TCP_IN =) .*/\1 "22, 80, 443, 9000"/' file
Run Code Online (Sandbox Code Playgroud)

输出:

TCP_IN = "22, 80, 443, 9000"
Run Code Online (Sandbox Code Playgroud)