使用awk在文本中添加特殊字符
我有一个文件是:使用awk在文本中添加特殊字符,awk,Awk,我有一个文件是: line1 line2 line3 我想要的是 "line1"{ "line1" } 我试图用awk来做这件事,但我不知道如何使用特殊字符。现在我有这个 awk '{ "$0" {"$0"} }' -v q='”将双引号字符保存在名为q的变量中,这样可以更容易地插入双引号,而不是使用转义符 ql=q$0 q这会在输入记录周围添加双引号 ql“{”ORS ql ORS“}”必需的输出,ORS是输出记录分隔符,默认为换行符 如果忽略不同参数之间的空格,请使用“}”在输
line1
line2
line3
我想要的是
"line1"{
"line1"
}
我试图用awk来做这件事,但我不知道如何使用特殊字符。现在我有这个
awk '{ "$0" {"$0"} }'
将双引号字符保存在名为-v q='”
的变量中,这样可以更容易地插入双引号,而不是使用转义符q
这会在输入记录周围添加双引号ql=q$0 q
必需的输出,ql“{”ORS ql ORS“}”
是输出记录分隔符,默认为换行符ORS
- 如果忽略不同参数之间的空格,请使用
在输出中的“}”
之前获得空格}
- 如果忽略不同参数之间的空格,请使用
- 您只需使用
printf
:
awk -v fmt='"%s"{\n"%s"\n}\n' '{printf fmt, $0,$0 }' file
使用您的数据进行测试:
kent$ awk -v fmt='"%s"{\n"%s"\n}\n' '{printf fmt, $0,$0 }' f
"line1"{
"line1"
}
"line2"{
"line2"
}
"line3"{
"line3"
}
与
sed
$ sed 's/.*/"&"{\n"&"\n}/' file
"line1"{
"line1"
}
"line2"{
"line2"
}
"line3"{
"line3"
}
另一个awk
$ awk -v OFS="\n" -v q='"' '{v=q $0 q; print v "{", v, "}" }' file
通常,使用反斜杠对特殊字符进行转义。请对预期输出使用代码标记,它也将显示为单行而不是多行。另外,您能否解释转换过程?是否只转换第一行而忽略其他行?etcI希望转换每一行。我希望有:“”line1“”{”第1行“”}
$ awk -v OFS="\n" -v q='"' '{v=q $0 q; print v "{", v, "}" }' file
$ awk '{$0="\""$0"\""; print $0 "{\n" $0 "\n}"}' file
"line1"{
"line1"
}
"line2"{
"line2"
}
"line3"{
"line3"
}