Miller / mlrのDSLを使用して、文字列が他の文字列の部分文字列であることを確認する

Miller / mlrのDSLを使用して、文字列が他の文字列の部分文字列であることを確認する

mlrのDSLを使用してCSV列に他の列が含まれているかどうかを確認するには?

つまり、CSVがあります。

a,b
test and,test and more

(a)が(b)'test and'に含まれているかどうかを知りたいです。'test and more'

ベストアンサー1

ノート:良いコメントを使用するために返信を修正しました。@クサラナンダ


お持ちの場合

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

得るために

第二 テスト
テスト*と テスト*など 1
ロレム 呼吸 0
~に関係なく 文字列であることを確認 1

使っていますssubb正規表現や特殊文字なしで文字列置換があることを確認する関数ですa

if($b != ssub($b,$a,""))、交換後の文字列がb自分と同じでない場合はa含まれますb

フィルタリングしたい場合は、次を実行できます。

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

得るために

第二
テスト*と テスト*など
~に関係なく 文字列であることを確認

ありがとう@クサラナンダ

おすすめ記事