在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'
我的输入文件有换行符的纯文本表示,其中分隔字段:
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'