从特定字符串中删除括号

VIK*_*ARY 4 awk sed

如果一些文字像

cell (ABC)
(A1)
(A2)
function (A1.A2)
Run Code Online (Sandbox Code Playgroud)

我想输出为

cell ABC
A1
A2
function (A1.A2)
Run Code Online (Sandbox Code Playgroud)

我想从文件的每一行中删除括号,除了函数行中的存在。使用代码

sed 's/[()]//g' file 
Run Code Online (Sandbox Code Playgroud)

从每一行中删除括号。如何修改上面的代码以获得所需的输出。

per*_*eal 7

您可以向 sed 命令添加跳出条件:

sed '/^function /b;s/[()]//g' file
Run Code Online (Sandbox Code Playgroud)

或者,以不匹配函数为条件替换:

sed '/^function /!s/[()]//g' file
Run Code Online (Sandbox Code Playgroud)

  • 抱歉,在发布我的答案之前没有注意到您的答案。++ (2认同)

Rav*_*h13 6

你能不能试试以下。使用 GNU 中显示的示例编写和测试awk

awk '!/function/{gsub(/[()]/,"")} 1' Input_file
Run Code Online (Sandbox Code Playgroud)

说明:为以上添加详细说明。

awk '                ##Starting awk program from here.
!/function/{         ##Checking condition if line does not have function in it then do following.
  gsub(/[()]/,"")    ##Globally substituting ( OR ) with null in current line.
}
1                    ##1 will print current line.
' Input_file         ##Mentioning Input_file name here.
Run Code Online (Sandbox Code Playgroud)