gpt4 book ai didi

regex - 当新行在数据中时计算txt文件中的行数

转载 作者:行者123 更新时间:2023-12-03 20:02:34 25 4
gpt4 key购买 nike

我有一个 txt 文件,其中包含以下数据

Name    mobile  url message text
test11 1234567890 www.google.com "Data Test New
Date:27/02/2020
Items: 1
Total: 3
Regards
ABC DATa
Ph:091 : 123456789"
test12 1234567891 www.google.com "Data Test New one
Date:17/02/2020
Items: 26
Total: 5
Regards
user test
Ph:091 : 433333333"
现在您可以看到我的最后一列数据有换行符。所以当我使用下面的命令时
awk 'END{print NR}' file.txt
它给我的长度是 15 但实际上线长是 3 。请建议相同的命令
编辑部分:
根据给出的答案,如果输入文件末尾没有换行符,则以下脚本不起作用
awk -v RS='"[^"]*"' '{gsub(/\n/, " ", RT); ORS=RT} END{print NR "\n"}' test.txt 
我的文件也可能有 3-4 百万条记录。所以将文件转换为 unix 格式需要时间,这不是我的偏好。
所以请提出一些在这两种情况下都适用的最佳解决方案
head 5.csv | cat -A  
Above command is giving me the output
姓名 手机 url 消息文本^M$

最佳答案

使用 gnu-awk您可以使用自定义 RS 来执行此操作:

awk -v RS='"[^"]*"' '{gsub(/(\r?\n){2,}/, "\n"); n+=gsub(/\n/, "&")}
END {print n}' <(sed '$s/$//' file)

15001
这里:
  • -v RS='"[^"]*"' :使用此正则表达式作为输入记录分隔符。匹配双引号字符串
  • n+=gsub(/\n/, "&") : 虚拟替换 \n与自身和计数\n在变量 n
  • END {print n} : 打印 n到底
  • sed '$s/$//' file : 最后一行添加一个换行符(以防丢失)

  • Code Demo

    关于regex - 当新行在数据中时计算txt文件中的行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65035029/

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