我正从文本文件中删除时间戳

问题描述 投票:0回答:2

文本文件包含

文件名是clean.txt,内容是

20170524201630.600|20170524201632.760|CC1|Mir wurde ganz schwer ums Herz.
20170524201633.280|20170524201634.600|CC1|Ich hoffte und betete,

我想删除时间戳和输出应该是

          Mir wurde ganz schwer ums Herz.
          Ich hoffte und betete,

我试着在命令行上运行

perl -0777 -pe 's/^[1-9]\d{13}\.\d{3}\\|^[1-9]\d{13}\.\d{3}\|[A-Z]{2}[0-9]\|//g'  clean.txt 

但我得到了结果。这里有什么问题?

regex perl
2个回答
2
投票

无需使用-0777读取整个文件:

$ perl -pe 's/.*\|//g' file
Mir wurde ganz schwer ums Herz.
Ich hoffte und betete,

或者如果您需要更具体:

$ perl -pe 's/^(\d{14}\.\d{3}\|)+[A-Z]{2}\d+\|//g' file

0
投票

我会做:

perl -0777 -pe 's/([^CC1|]+)$//gm'  clean.txt 

现场演示here

简要说明:

  • ([^CC1|])匹配括号中没有的单个字符
  • \+ Quantifier - 在一次和无限次之间匹配
  • $在一条线的末尾断言位置
  • g修饰符:全局。所有比赛(首场比赛后不返回)
  • m修饰符:多行。导致^和$匹配每行的开头/结尾(不仅是字符串的开头/结尾)
© www.soinside.com 2019 - 2024. All rights reserved.