匹配文件中的ID

时间:2017-11-13 07:46:11

标签: shell

我有一个inputId文件

<div>
   <span v-for="inv, index in data.inventory" v-if="index != data.inventory.length - 1">{{inv}},</span>
   <span v-else>{{inv}}</span>
</div>

我有其他matcherFile为

input_abc,input_xyz,input_def
input_def,input_qwe
input_ghf,input_tgf,input_xyz

我想从inputId文件中过滤matcherFile中的所有id,因此输出为

input_xyz
input_def

Wat我写的是

input_abc
input_qwe
input_ghf,input_tgf

2 个答案:

答案 0 :(得分:1)

我从您的帖子中了解到,您希望从matcherFile文件中匹配的inputId文件中删除条目。

为此我希望这段代码可以帮到你。

inputFileName="$1"
matchFile="$2"
outputFile="$3"

cp $inputFileName ${inputFileName}_bkp

matchFileIds=$(cat $matchFile); 
echo "$matchFileIds"

for IDS in $(cat $matchFile);
do
 echo $IDS
 sed -i "s/$IDS,//g" $inputFileName
 sed -i "s/,$IDS//g" $inputFileName

done

mv $inputFileName $outputFile
mv ${inputFileName}_bkp $inputFileName 

答案 1 :(得分:1)

这是另一种可能的解决方案。

$ cat input.txt
input_abc,input_xyz,input_def
input_def,input_qwe
input_ghf,input_tgf,input_xyz

$ cat filter.txt
input_xyz
input_def

$ cat filter.sh
#!/bin/sh
input_file=input.txt
filter_file=filter.txt

for filter in $(cat $filter_file)
do
        cmd="$cmd|sed -e's/$filter//g'"
done
cmd="cat ${input_file} ${cmd} | sed -e's/,,//g'| sed -e's/^,//g'| sed -e's/,$//g'"
echo $cmd > ./tmp_script.sh
bash ./tmp_script.sh

$ ./filter.sh
input_abc
input_qwe
input_ghf,input_tgf