如何替换第三个逗号后的字符串
How to replace the character string after the third comma
我想在第三个逗号后用“/”替换/。
[加急]
AAA,BB/B,CCC,D/D,EEE
↓
AAA,BB/B,CCC,D”/”D,EEE
[我试过的]
cat sample.txt | awk '
{
gsub( /, "/", )
print ,
}
'
使用您显示的示例,请尝试以下 awk
代码。简单的解释是,将 FS
和 OFS
设置为 ,
并在主块中将 /
替换为第 4 个字段中的 "/"
并提及 1
将打印 edited/non-edited 行。
awk 'BEGIN{FS=OFS=","} {sub("/","\"/\"",)} 1' Input_file
使用 "
(\x22
) 的十六进制字符代码和正则表达式的字符列表 [/]
的细微变化,您可以这样做:
awk -F, -v OFS="," '{sub(/[/]/,"\x22/\x22",)}1' file
例子Use/Output
你的情况是:
$ echo "AAA,BB/B,CCC,D/D,EEE" | awk -F, -v OFS="," '{sub(/[/]/,"\x22/\x22",)}1'
AAA,BB/B,CCC,D"/"D,EEE
没有我希望的那么优雅:
AAA,BB/B,CCC,D/D,EEE
>>>
AAA,BB/B,CCC,D"/"D,EEE
# gawk profile, created Tue May 17 02:51:22 2022
BEGIN {
_ = substr("",\
(__ = (_ = (_="[^,]*[,]")(_)_)(\
OFS = FS = "[/]") "*")^sub(FS,"^&",__)^gsub("[:-~]","\"",OFS))
} ($-_)~((__)FS) ? sub(__,"&"_)*sub((_)FS, OFS) : !-_'
我想在第三个逗号后用“/”替换/。
[加急]
AAA,BB/B,CCC,D/D,EEE
↓
AAA,BB/B,CCC,D”/”D,EEE
[我试过的]
cat sample.txt | awk '
{
gsub( /, "/", )
print ,
}
'
使用您显示的示例,请尝试以下 awk
代码。简单的解释是,将 FS
和 OFS
设置为 ,
并在主块中将 /
替换为第 4 个字段中的 "/"
并提及 1
将打印 edited/non-edited 行。
awk 'BEGIN{FS=OFS=","} {sub("/","\"/\"",)} 1' Input_file
使用 "
(\x22
) 的十六进制字符代码和正则表达式的字符列表 [/]
的细微变化,您可以这样做:
awk -F, -v OFS="," '{sub(/[/]/,"\x22/\x22",)}1' file
例子Use/Output
你的情况是:
$ echo "AAA,BB/B,CCC,D/D,EEE" | awk -F, -v OFS="," '{sub(/[/]/,"\x22/\x22",)}1'
AAA,BB/B,CCC,D"/"D,EEE
没有我希望的那么优雅:
AAA,BB/B,CCC,D/D,EEE
>>>
AAA,BB/B,CCC,D"/"D,EEE
# gawk profile, created Tue May 17 02:51:22 2022
BEGIN {
_ = substr("",\
(__ = (_ = (_="[^,]*[,]")(_)_)(\
OFS = FS = "[/]") "*")^sub(FS,"^&",__)^gsub("[:-~]","\"",OFS))
} ($-_)~((__)FS) ? sub(__,"&"_)*sub((_)FS, OFS) : !-_'