【发布时间】:2019-10-19 21:59:06
【问题描述】:
根据一个字符将文件中的第一列分成两列。 括号 () 内的数据应移至删除括号的新列。
给定 csv 文件:
Col1(col2),col3,col4,col5
a(23),12,test(1),test2
b(30),15,test1(2),test3
预期文件:
Col1,col2,col3,col4,col5
a,23,12,test(1),test2
b,30,15,test1(2),test3
我尝试了以下代码。我无法提取括号之间的数据,而且每次出现“()”。
awk -F"(" '$1=$1' OFS="," filename
【问题讨论】:
-
awk -F"[(),]+" '$1=$1' OFS="," file? -
@WiktorStribiżew 仅在您需要时使用操作的结果作为条件,否则您会混淆代码并引入潜在的错误。在这种情况下,例如,当
$1为0时,您的脚本将失败 - 写入{$1=$1}1而不仅仅是$1=$1。 -
@EdMorton 我没有写它:) 它是复制/粘贴。我只关注字段分隔符模式。
-
@WiktorStribiżew 对我来说,你没有提出一个完整的解决方案并不明显,所以 OP 可能也没有意识到这一点。
标签: shell awk sed text-processing cut