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

Using a field separator of the two-character string "\n" in awk

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

First line\nSecond line\nThird line

我希望以下内容用换行符替换该文本 \n

$ awk 'BEGIN { FS = "\n"; OFS = "\n" } { print  }' test.txt                                                                                                                                  
First line\nSecond line\nThird line

但它不是 (gawk 4.0.1 / OpenBSD nawk 20110810)。

我只允许在 \:

分开
$ awk 'BEGIN { FS = "\"; OFS = "\n" } { print ,  }' test.txt 
First line
nSecond line

我也可以在 gawk 中使用字符 class:

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

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

字段分隔符是一种正则表达式,当使用动态正则表达式时,您需要双重转义所有内容:

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

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

这里 sed 可能是完成此任务的更好工具

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