在逗号和shell之间的字符串中添加引号
我有一根像在逗号和shell之间的字符串中添加引号,shell,awk,sed,Shell,Awk,Sed,我有一根像 1,2,A,N,53,3,R,R,^A,-C,-T,2,S,9,l,8,8Z,sl,138Z,l,Y,75680,P 现在,我正在努力实现以下目标 1,2,A,N,53,3,R,R,"^A,-C,-T",2,S,9,l,8,8Z,sl,138Z,l,Y,75680,P 所以,我试着把逗号(,)从开始第8次出现之后和逗号(,)从结束第12次出现之前的所有内容都替换为引号 我尝试了awk的一些选项,但无法实现。无论如何,我要把这件事做完 提前谢谢 试试看: x='1,2,A,N,53
1,2,A,N,53,3,R,R,^A,-C,-T,2,S,9,l,8,8Z,sl,138Z,l,Y,75680,P
现在,我正在努力实现以下目标
1,2,A,N,53,3,R,R,"^A,-C,-T",2,S,9,l,8,8Z,sl,138Z,l,Y,75680,P
所以,我试着把逗号(,)从开始第8次出现之后和逗号(,)从结束第12次出现之前的所有内容都替换为引号
我尝试了awk的一些选项,但无法实现。无论如何,我要把这件事做完
提前谢谢 试试看:
x='1,2,A,N,53,3,R,R,^A,-C,-T,2,S,9,l,8,8Z,sl,138Z,l,Y,75680,P'
awk -F, -v OFS=, -v q='"' '{$9=q $9;$11=$11 q}1' <<< "$x"
1,2,A,N,53,3,R,R,"^A,-C,-T",2,S,9,l,8,8Z,sl,138Z,l,Y,75680,P
因此,我在这里创建了一个变量“并将字段分隔符设置为逗号。然后我根据您的要求使用s1和$9重新创建第9个字段。然后从最后一个字段重新创建第13个字段(需要注意的是,此处没有字段编号的硬编码,因此可能有任意数量的字段)并将s1的值添加到当前值的最后一个。然后提到1将打印该行。将s(输出字段分隔符)也设置为逗号。尝试:
所以我在这里创建一个变量,它是“并将字段分隔符设置为逗号”。然后,我将根据您的要求用s1和9美元重新创建第9个字段。然后从最后一个字段重新创建第13个字段(需要注意的是,此处没有字段编号的硬编码,因此可能有任意数量的字段),并将s1的值添加到当前值的最后一个字段中。然后,1将打印该行。将S(输出字段分隔符)也设置为逗号。这可能适用于您(GNU-sed):
在之后和之前插入“
”
8和11。这可能适用于您(GNU-sed):
awk '{sub(/\^A,-C,-T/,"\42^A,-C,-T\42")}1' file
1,2,A,N,53,3,R,R,"^A,-C,-T",2,S,9,l,8,8Z,sl,138Z,l,Y,75680,P
在之后和之前插入“
”
8和11
awk '{sub(/\^A,-C,-T/,"\42^A,-C,-T\42")}1' file
1,2,A,N,53,3,R,R,"^A,-C,-T",2,S,9,l,8,8Z,sl,138Z,l,Y,75680,P
这里的要点是避开插入符号
这里的要点是转义插入符号。因此,如果我将字符串作为txt文件传递给变量,它将以相同的方式工作。我想知道多行是否一起传递。这是从前面开始计算字段。。我从前面数第9个,从后面数第12个..因此,如果我将字符串作为txt文件传递给变量,它将以相同的方式工作。我想知道多行是否一起传递。这是从前面开始计算字段。。我从前面数第九,从后面数第十二。。
awk -v s1="\"" -F, '{$9=s1 $9;$(NF-12)=$(NF-12) s1} 1' OFS=, Input_file
sed 's/,/&"/8;s/,/"&/11' file
awk '{sub(/\^A,-C,-T/,"\42^A,-C,-T\42")}1' file
1,2,A,N,53,3,R,R,"^A,-C,-T",2,S,9,l,8,8Z,sl,138Z,l,Y,75680,P