使用双字符串的字段分隔符" \ n"在awk

时间:2015-07-26 14:28:54

标签: 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

但它没有(gawk 4.0.1 / OpenBSD nawk 20110810)。

我可以单独分开\

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

我也可以在gawk中使用一个字符类:

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

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

2 个答案:

答案 0 :(得分:4)

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

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

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

答案 1 :(得分:2)

此处sed可能是此任务的更好工具

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