You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何筛选输入文件中紧跟指定匹配(含部分匹配)text2行的text1行并输出

筛选相邻行中符合前缀匹配的text1和text2组合

要实现你要的功能,用awk工具是最直接高效的,它能轻松处理行与行之间的关联判断。下面是具体的步骤和命令:

步骤1:设置匹配前缀变量

先在shell里定义你要匹配的前缀变量,比如你需要匹配a.b.:

val="a.b."

步骤2:执行awk筛选命令

用下面的命令处理你的输入文件(假设输入文件名为input.txt):

awk -v prefix="$val" 'prev ~ /^text1/ && $0 ~ "^text2 " prefix {print prev "\n" $0} {prev=$0}' input.txt

命令工作原理拆解

  • -v prefix="$val":把shell中定义的val变量传递给awk内部的prefix变量,这样我们可以灵活修改匹配前缀,不用改awk脚本本身。
  • prev ~ /^text1/:检查上一行(用prev变量存储)是否是以text1开头的行。
  • $0 ~ "^text2 " prefix:检查当前行是否是以text2 (注意后面有空格)加上我们指定的前缀开头的行。
  • 当两个条件同时满足时,就打印上一行的text1内容和当前行的text2内容,中间换行分隔。
  • {prev=$0}:每处理完一行,就把当前行的内容保存到prev变量,供下一行的判断使用。

测试输出效果

用你提供的修正后输入文件执行命令,会得到你想要的结果:

text1 valueA valueN valueB
text2 a.b.c.d-e
text1 valueC valueN valueD
text2 a.b.c.d-e
text1 valueI valueN valueJ
text2 a.b.c.d-e

如果之后需要修改匹配的前缀,只需要重新设置val变量的值再执行awk命令就行,非常灵活。

内容的提问来源于stack exchange,提问作者TempoChocolate

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 06:28:35