使用awk在文本中添加特殊字符

时间:2018-09-25 15:14:22

标签: awk

我有一个文件:

line1
line2
line3

我想拥有的是

"line1"{
"line1"
 }

我正在尝试使用awk来执行此操作,但是我不知道如何使用特殊字符。现在我有了这个。

awk '{ "$0" {"$0"} }' 

4 个答案:

答案 0 :(得分:2)

$ awk -v q='"' '{ql = q $0 q; print ql "{" ORS ql ORS "}" }' ip.txt
"line1"{
"line1"
}
"line2"{
"line2"
}
"line3"{
"line3"
}
  • -v q='"'将双引号字符保存在名为q的变量中,从而更容易插入双引号而不是使转义变得混乱
  • ql = q $0 q会在输入记录周围添加双引号
  • ql "{" ORS ql ORS "}"必需的输出,ORS是输出记录分隔符,默认情况下为换行符
    • 不同参数之间的空格将被忽略,请使用" }"在输出中的}之前留一个空格

答案 1 :(得分:2)

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

答案 2 :(得分:2)

services.AddSession(options =>
{
    // Set a short timeout for easy testing.
    options.IdleTimeout = TimeSpan.FromSeconds(30);
    options.Cookie.SameSite = SameSiteMode.None;
});

答案 3 :(得分:1)

您可以简单地使用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"
}