如何使用 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 | 乙 |
---|---|
测试*和 | 测试*及更多 |
无论 | 判断是否是一个字符串 |