我有一个包含以下示例内容的文件:
NOF DOWN BITS = 96 个数据 = 2018 年 1 月 3 日星期三 04:37:32 2018:7E 1 月 3 日星期三 04:37:32 2018:7E 1 月 3 日星期三 04:37:32 2018:7E 2018 年 1 月 3 日星期三 04:37:32: 7E 1 月 3 日周三 04:37:32 2018:7E 1 月 3 日周三 04:37:32 2018:7E 1 月 3 日周三 04:37:32 2018:7E 1 月 3 日周三 04:37:32 2018:7E 1 月 3 日周三 04: 37:32 2018:7E 1 月 3 日星期三 04:37:32 2018:7E 1 月 3 日星期三 04:37:32 2018:7E 1 月 3 日星期三 04:37:32 2018:7E 2018 年 1 月 3 日星期三 04:37:32:
nof_received_data_packets
我想从文件中删除日期和时间。也就是说,我想删除“Wed Jan 3 XX:XX:XX 2018:”的所有实例。n
因此,可能会在每次出现Wed
should do之后删除字符。
我将如何完成它sed
?
只需匹配模式:
可能有更复杂的方法来编写它,但它确实有效。
使用awk:
这可以通过将记录分隔符 (RS) 设置为匹配字符串的正则表达式,该字符串看起来像日期和时间,后跟 a
:
,并将输出记录分隔符 (ORS) 设置为空。然后它只打印每个“记录”。
它适用于任何日期和时间,仅假设短月份名称和短日期名称始终为三个字母长,并且日期格式始终为
Day Month Daynum HH:MM:SS YYYY
.使用 sed:
这使用相同的日期匹配正则表达式来删除所有看起来像日期和时间后跟
:
.使用perl:
perl 正则表达式有一些很好的快捷方式来指定“单词”字符 (
\w
) 和数字 (\d
)。perl 版本可以识别 unicode,并且可以在任何语言环境中工作。这三个都是相当蛮力的脚本。除非日期格式可能与上述不同,否则我认为不值得尝试比这更花哨的东西。如果是这样的话,我可能会在 perl 中写一些东西来使用
Date::Parse
模块扫描每一行的子字符串。和版本需要 GNU
sed
和GNU ,或者至少需要它们中能够理解正则表达式重复计数的版本。awk
sed
awk
{n,m}