gpt4 book ai didi

linux - 逐行读取文件并在每行中打印第一个匹配项,或者在没有匹配项时打印 "no_data"

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:51:10 25 4
gpt4 key购买 nike

我想逐行读取文本文件以搜索模式;当找到一行中的第一个匹配项时,将其打印到文件并移动以在下一行中搜索模式。

由于我在 shell 方面的技能有限,我尝试了以下方法;不幸的是,当没有第一个模式时,它永远不会将 no_data 打印到文件 d.txt

while read u ; do
echo "$u" | grep -o '[0-9]\{2\}/[0-9]\{2\}/[0-9]\{4\} [0-9]\{2\}:[0-9]\{2\}' |head -1 || echo "no_data"
done < tmc.txt > d.txt

注意:我尝试匹配的模式是格式为 mm/dd/yyyy hh:mm 的日期和时间戳。

例如,$u 可以是这样的字符串,甚至可以是更大的字符串:

disk0/bcdackup_20160908_115716/d/.ER/ERORR_log_msnf_20160906_113039:10641:  Test Status:         Failed ;Test PL (some test) was started in execution mode.  09/06/2016  14:43:28.4954  Machine:msnf  (Rl888751, , ?.?, 1637) USER EVENT: TM-1102 DEFAULT  -- SYSTEM ERROR: TX-0003 INIT  Function Protocol Violation. Verification by TXXAxREQxConfig_destroy_config failed: 'engine_ptr != NULL' not TRUE  -- SYSTEM EVENT: ER-0FFF DEFAULT (linked to IH-154B) DEACTIVATE: IH-154b DEACTIVATE: IH-154b  -- SYSTEM EVENT: ER-0FFF DEFAULT (linked to IH-154C) DEACTIVATE: IH-154c DEACTIVATE: IH-154c  -- SYSTEM ERROR: WP-2631 CHANGEPARAMS  Error during processing of Finite State Machine Error starting perform_smooth_landing : event perform_smooth_landing not allowed in state {original_mc, actuator_system_enabled, service_off, not_homed} of state-machine WPLS.V1.2  -- SYSTEM ERROR: WP-2630 CHANGEPARAMS  Error during processing of F   

我可以使用任何 shell 实用程序,例如 grep、awk、sed、perl。

最佳答案

这是一个 Perl 解决方案:

perl -nle 'print m{(\d{2}/\d{2}/\d{4} \d{2}:\d{2})} ? $1 : "no_data"' < tmc.txt > d.txt

-n 循环输入中的行。

-l 自动从输入中删除换行符并将它们添加到输出中。

对于每一行,我们都使用捕获组进行简单的正则表达式匹配。如果成功,我们打印匹配的字符串,否则 no_data

关于linux - 逐行读取文件并在每行中打印第一个匹配项,或者在没有匹配项时打印 "no_data",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41430802/

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