在awk中使用两个字符串“\n”的字段分隔符

在awk中使用两个字符串“\n”的字段分隔符,awk,gawk,Awk,Gawk,我的输入文件中有一个分隔字段的换行符的纯文本表示: First line\nSecond line\nThird line 我希望以下内容用换行符\n替换该文本: $ awk 'BEGIN { FS = "\\n"; OFS = "\n" } { print $1 }' test.txt

我的输入文件中有一个分隔字段的换行符的纯文本表示:

First line\nSecond line\nThird line
我希望以下内容用换行符\n替换该文本:

$ awk 'BEGIN { FS = "\\n"; OFS = "\n" } { print $1 }' test.txt                                                                                                                                  
First line\nSecond line\nThird line
但它并不支持4.0.1/OpenBSD-nawk 20110810

我只允许在\:

我也可以在gawk中使用角色类:

$ awk 'BEGIN { FS = "[[:punct:]]n"; OFS = "\n" } { $1 = $1; print $0 }' test.txt 
First line
Second line
Third line

但是我觉得我应该能够指定确切的分隔符。

字段分隔符是一种regexp类型,当使用动态regexp时,需要双重转义所有内容:

$ awk 'BEGIN { FS = "\\\\n"; OFS = "\n" } { print $1 }' file
First line

有关详细信息,请参见手册页。

字段分隔符是regexp的一种类型,当使用动态regexp时,需要双重转义所有内容:

$ awk 'BEGIN { FS = "\\\\n"; OFS = "\n" } { print $1 }' file
First line
有关详细信息,请参阅手册页。

这里sed可能是执行此任务的更好工具

sed 's/\\n/\n/g'
这里sed可能是执行此任务的更好工具

sed 's/\\n/\n/g'

re better tool:我在帖子中举了一个最小的例子,是的。对于我需要的原始程序,需要使用awk,它只是有一个奇怪的记录分隔符。你总是可以分而治之sed's/\\n/\n/g'| awk'…是更好的工具:在我的帖子中,至少举一个例子,是的。对于我需要的原始程序,需要使用awk,它只是有一个奇怪的记录分隔符。你总是可以分而治之sed's/\\n/\n/g'| awk'。。。