在Awk中如何在字符串中打印出一个换行符

14

我试过到处搜索,但是找不到任何结果。我正在尝试弄清楚...如何打印出实际的 \n 字符,以使其在输出文件中显示为:

stuff stuff stuff \n stuff stuff stuff \n stuff stuff stuff \n stuff stuff stuff \n

任何帮助都将不胜感激。


1
请展示您当前用于生成该代码的代码,可能存在不当使用、拼写错误等问题。 - Mendhak
除了显而易见的 gsub(/$/, "\\n") 之外,还有什么其他的方法吗?http://ideone.com/p2e7S4 - tripleee
1个回答

28

我相信你所要做的就是以以下方式对 \n 中的斜杠进行转义:\\n

这里有一个简单的示例:

ll | awk '{ printf "%s\\n\n",$1 }'

这应该打印当前目录中每个文件的权限列,在每行输入之后,插入一个字面换行字符\n,然后插入一个实际的换行符。

结果应该看起来像这样:

drwxrwxr-x.\n
-rw-rw-r--.\n
-rw-rw-r--.\n
-rwxrwxr-x.\n
-rwxrwxr-x.\n
drwxrwxr-x.\n
drwxrwxr-x.\n

正如你所见,每一行末尾都有一个字面上的\n


如果你不想要任何“真实”的换行符,并且希望所有输出都在一行上,可以从printf语句中移除第二个\n

ll | awk '{ printf "%s\\n",$1 }'

这将为您提供与您在问题中提到的非常相似的输出,每个输入行后面添加了一个字面意义上的\n

\n-rwxrwxr-x.\ndrwxrwxr-x.\n-rw-rw-r--.\n-rwxrwxr-x.\ndrwxrwxr-x.\n-rw-rw-r--.\ndrwxrwxr-x.\n-rw-rw-r--.\n

非常抱歉...我会进行编辑,但我应该重新表述一下,在每行末尾加入。你能提供帮助吗? - Richard John Catalano
你需要做的事情完全相同 - 通过添加额外的斜杠来转义换行符:\\n - Lix
看一下我的修改 - 或许这就是你要找的。 - Lix
太好了!就是这样!非常感谢你! - Richard John Catalano
@user3521858 - 非常欢迎你!祝你编写脚本愉快! - Lix

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接