如果一些文字像
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)
从每一行中删除括号。如何修改上面的代码以获得所需的输出。
您可以向 sed 命令添加跳出条件:
sed '/^function /b;s/[()]//g' file
Run Code Online (Sandbox Code Playgroud)
或者,以不匹配函数为条件替换:
sed '/^function /!s/[()]//g' file
Run Code Online (Sandbox Code Playgroud)
你能不能试试以下。使用 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)