使用 Miller/mlr 的 DSL 查找一个字符串是否是另一个字符串的子字符串

使用 Miller/mlr 的 DSL 查找一个字符串是否是另一个字符串的子字符串

如何使用 mlr 的 DSL 查找 CSV 的列是否包含另一列?

换句话说,我有一个 CSV

a,b
test and,test and more

并想知道'test and'(a)是否包含在'test and more'(b)中

答案1

笔记:我已经编辑了我的回复,使用了伟大的评论@Kusalananda


如果你有

a,b
test*and,test*and more
lorem,ipsum
whether,Finding whether a string

你可以跑

mlr --csv put 'if($b != ssub($b,$a,"")){$test=1}else{$test=0}' input.csv

要得到

A 测试
测试*和 测试*及更多 1
洛雷姆 伊普苏姆 0
无论 判断是否是一个字符串 1

我正在使用ssub函数,检查我是否有字符串替换b- 没有正则表达式,没有特殊字符 - 使用我在a.

if($b != ssub($b,$a,"")),如果字符串替换后b不等于其自身,则a包含在 中b

如果你只想过滤,你可以运行

mlr --csv filter '$b != ssub($b,$a,"")' input.csv

要得到

A
测试*和 测试*及更多
无论 判断是否是一个字符串

谢谢@Kusalananda

相关内容