我的输入文件在其中分隔字段的换行符字符的纯文本表示:
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
但我觉得我应该能够指定确切的分隔符。
答案 0 :(得分:4)
字段分隔符是一种正则表达式,当使用动态正则表达式时,您需要双重转义所有内容:
$ awk 'BEGIN { FS = "\\\\n"; OFS = "\n" } { print $1 }' file
First line
有关详细信息,请参见手册页。
答案 1 :(得分:2)
此处sed
可能是此任务的更好工具
sed 's/\\n/\n/g'