我有两个文件
refer.txt
hello/john,hi/roshan,bye/jill,ok/rashmi
main.txt
ok/sara/1.0,hello/john/2.1,to/mary/1.2,bye/jill/3.1,cya/trina/2.1
所以现在我需要创建一个新文件output.txt,如下所示
hello/john/2.1,bye/jill/3.1
基本上,refer.txt应该在main.txt中进行查找,如果模式匹配则应该从main.txt中获取整个字段并将其放在输出文件夹中。
我尝试过以下代码:
patterns="/soa/admin/raj/test1.txt"
search="/soa/admin/raj/test2.txt"
grep - -f <(tr ',' '\n' < "${patterns}") "${search}"
但没有工作。请帮忙
答案 0 :(得分:1)
以下使用egrep为我工作:
ChrPlus.addActionListener(final ActionEvent theEvent) {
BarterPts.setText(//New text here based off a function);
}
<强>更新强> 要用逗号分隔输出,只需附加另一个tr命令,如下所示。
pattern=`tr ',' '|' < "refer.txt"`
tr ',' '\n' < "main.txt" | egrep "$pattern"
答案 1 :(得分:0)
这是解决方案的第一次切入。我发现最简单的方法是创建一个临时文件,然后将其用作grep模式:
tmpfile=tf$$
tr , '\n' < refer.txt > $tmpfile
tr , '\n' < main.txt | grep -f $tmpfile | tr '\n' ,
rm $tmpfile
这仍有一些问题,但这是一个开始。
如果每个模式以^
开头并以/
结尾,那会更好。这也很容易实现。
答案 2 :(得分:0)
pattern=`tr ',' '|' < "test1.txt"`
zoo=$(tr ',' '\n' < "test2.txt" | egrep "$pattern" | tr '\n' ,)
echo 'COMPOSITES='$zoo > newfile.txt
sed -i '$s/,$//' newfile.txt
这很有用