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

如何筛选仅在WHERE后出现ALP_ACCT_PROD_ID的文件行?

筛选WHERE之后出现指定字段的行

给定文件File1.csv内容如下:

Apple is red WHERE the column ALP_ACCT_PROD_ID, it can be plucked
Apple is red ON ALP_ACCT_PROD_ID , WHERE it can be plucked

需求是仅保留ALP_ACCT_PROD_ID出现在WHERE之后的行,以下是两种可行的解决方法:

方法一:使用grep的Perl正则模式

利用正向肯定预查匹配WHERE之后的目标字段:

grep -P '(?<=WHERE.*)ALP_ACCT_PROD_ID' File1.csv

解释:(?<=WHERE.*)是正向预查断言,确保ALP_ACCT_PROD_ID的前面存在WHERE(中间可包含任意字符),只会匹配符合位置要求的行。

方法二:使用awk判断位置关系

通过字符串位置比较实现筛选:

awk 'index($0,"ALP_ACCT_PROD_ID") > index($0,"WHERE")' File1.csv

解释:index($0, "字符串")返回该字符串在当前行的起始位置,当ALP_ACCT_PROD_ID的位置大于WHERE的位置时,说明WHERE出现在目标字段之前,此时打印该行。

原命令grep ALP_ACCT_PROD_ID会返回所有包含目标字段的行,无法区分位置顺序,因此不满足需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 15:46:01