gpt4 book ai didi

perl - 删除最后的文本\

转载 作者:行者123 更新时间:2023-12-01 10:06:09 29 4
gpt4 key购买 nike

我一直在尝试做一些 perl 正则表达式,但碰壁了。我正在尝试对日志文件进行一些数据分析,但遇到了以下问题:

我有一个文件 test.csv,它由来自另一个程序的多个单行条目组成,该程序生成以下布局格式:

  • d:\snow\dir.txt
  • d:\snow\history\dir.tff
  • d:\snow\history\help.jar
  • d:\winter\show\help.txt
  • d:\summer\beach\ocean\swimming.txt

我想做的是从路径列表中删除文件名,因此生成的文件将包含:

  • d:\雪\
  • d:\snow\历史\
  • d:\snow\历史\
  • d:\winter\show\
  • d:\summer\beach\ocean\

我在这个问题上用头撞墙,并尝试了各种 perl 正则表达式,试图删除文件名,但运气不佳。由于目录路径的长度各不相同,我碰壁了,我不确定这是否可以在 perl 或 python 中完成。

最佳答案

你可以用 Perl 中的一行来做到这一点:

perl -pe 's/[^\\]+$/\n/' <infile.txt >outfile.txt

将其分解:

-p 使 Perl 将语句(由 -e 提供)包装在 while 循环中,将语句应用于每一行输入文件,并打印结果。

-e 为 Perl 提供一条针对每一行运行的语句。

s/[^\\]+$/\n/ 是一个替换语句,它使用正则表达式来更改任何字符序列,不包括行尾的反斜杠,以只是一个换行符 \n

[^\\] 是一个正则表达式,匹配任何不是反斜杠的单个字符

[^\\]+ 是匹配一个或多个不是反斜杠的字符的正则表达式

[^\\]+$ 是一个正则表达式,匹配一个或多个 不是反斜杠后跟行尾的字符

关于perl - 删除最后的文本\,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10407197/

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