Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 从文件中删除Grep命令_Linux_Unix_Grep - Fatal编程技术网

Linux 从文件中删除Grep命令

Linux 从文件中删除Grep命令,linux,unix,grep,Linux,Unix,Grep,我有两个文件。 在第一个文件中,我想在第二个文件中找到TEPLATE。 我必须如何在输出的第一个文件中使用grep作为保存顺序。 例如: 文件1: a dc 作为 文件2: aadfadf asdva vaad a dccsads 以及 我使用这个命令: grep-f file1 file2>>file3这会有点慢,但非常简单: TEMP1=$(mktemp /tmp/grep.XXXXXXXXXXX) TEMP2=$(mktemp /tmp/grep.XXXXXXXXXXX) cat file

我有两个文件。
在第一个文件中,我想在第二个文件中找到TEPLATE。
我必须如何在输出的第一个文件中使用grep作为保存顺序。
例如:

文件1:
a
dc
作为

文件2:
aadfadf
asdva
vaad
a
dccsads
以及

我使用这个命令:

grep-f file1 file2>>file3

这会有点慢,但非常简单:

TEMP1=$(mktemp /tmp/grep.XXXXXXXXXXX)
TEMP2=$(mktemp /tmp/grep.XXXXXXXXXXX)
cat file2 > $TEMP1
cat file1 | while read line
do 
  grep "$line" $TEMP1
  grep -v "$line" $TEMP1 > $TEMP2
  mv $TEMP2 $TEMP1
done > result
rm $TEMP2 $TEMP1
结果中的结果列表


我使用临时文件
$TEMP1
$TEMP2
grep-v
来避免结果中的重复。

这会有点慢,但非常简单:

TEMP1=$(mktemp /tmp/grep.XXXXXXXXXXX)
TEMP2=$(mktemp /tmp/grep.XXXXXXXXXXX)
cat file2 > $TEMP1
cat file1 | while read line
do 
  grep "$line" $TEMP1
  grep -v "$line" $TEMP1 > $TEMP2
  mv $TEMP2 $TEMP1
done > result
rm $TEMP2 $TEMP1
结果中的结果列表


我使用临时文件
$TEMP1
$TEMP2
grep-v
来避免结果中的重复。

注意,当一个模式是另一个模式的子字符串/子匹配时,您将得到重复。@AaronDigulla:不,Aaron!我使用grep-v解决了这个问题,但不再是“非常简单的”;-)这个答案很古老,但现在对我帮助很大。非常感谢您。@ThulasiR:嗯,与
grep
:)的年龄相比,它并没有那么老。请注意,当一个模式是另一个模式的子字符串/子匹配时,您将得到重复的模式。@Aarondigula:不,Aaron!我使用grep-v解决了这个问题,但不再是“非常简单的”;-)这个答案很古老,但现在对我帮助很大。非常感谢..@ThulasiR:好吧,与
grep
:)的年龄相比,它还不算太老。你能在你的示例中展示你期望的输出吗?你能在你的示例中展示你期望的输出吗?