【发布时间】:2022-08-06 08:49:29
【问题描述】:
Gawk 手册says about sprintf: \"返回(不打印)printf 将打印出的字符串...\"
这是 printf 输出:
awk \'{ printf \"%s\", $0 }\' <<< \'line1
line2\'
line1line2%
但是, sprintf 似乎保留了换行符:
awk \'{ my_var=sprintf(\"%s\", $0); print my_var }\' <<< \'line1
line2\'
line1
line2
(与 BSD 和 GNU awk 相同。)
为什么会这样?
如何在不使用 RS/ORS/sub 的情况下以这种方式将换行符内容放入变量中?
-
print打印换行符。你在做my_var=soemthing; printHow do I put in a variable the newline-stripped content this way它在$0,如果你不想打印换行符,用printf打印。printf \"%s\", my_var -
@KamilCuk,如果变量是单行的,我想下面的命令应该将两行打印为一行。请注意,没有
print。但事实并非如此。awk \'/line1/,/line2/ { out=sprintf(\"%s\", $0); match(out, /line1.*/); print out }\' <<< \'line1 \\ line2\' -
print out打印换行符.print打印参数加上换行符.awk \'/line1/,/line2/ { out=sprintf(\"%s\", $0); match(out, /line1.*/); printf out }\' <<<$\'line1 \\\\\\nline2\'
标签: awk