gpt4 book ai didi

awk: 在 "\n"处拆分

转载 作者:行者123 更新时间:2023-12-02 00:45:54 24 4
gpt4 key购买 nike

我正在尝试处理一个日志文件,其中的条目被压缩成一行,换行符编码为“\n”。我想保留第一个“\n”之前的所有内容并丢弃其余部分。 awk -F"\n"'{print $1}' file 不起作用,awk -F"\\n"'{print $1}' file 也不起作用>。此命令的正确形式是什么?

最佳答案

$ echo 'a\nb'
a\nb

$ echo 'a\nb' | awk -F'\\\\n' '{print $1}'
a

原因如下:考虑在正则表达式比较中使用上述字符:

  • n = 文字字符n ($0 ~/n/)
  • \n = 文字换行符 ($0 ~/\n/)
  • \\ = 在正则表达式常量中使用时的反斜杠 ($0 ~/\\/)
  • \\\\ = 在动态正则表达式中使用时的反斜杠 ($0 ~ "\\\\")

最后一个是因为动态正则表达式是一个字符串,它必须被解析一次才能转换为正则表达式,然后在用作该正则表达式时再次被解析,所以因为它被解析了两次,所以它需要所有转义符都加倍.

因为当你说 -F "whatever" 时,字段分隔符基本上是一个正则表达式(有一些曲折),你将 FS 变量定义为动态正则表达式,因此转义必须加倍.

关于awk: 在 "\n"处拆分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43924863/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com