将grep搜索从多个文件粘贴到新文件

时间:2014-05-23 14:37:41

标签: linux grep

我有多个这样的文件。

filename.log.50
filename.log.49
filename.log.48
...
...
filename.log.2
filename.log.1

所有内容都是

....connection established
....sending data "Text"
....return ok
....connection closed

我怎样才能将所有发送数据" Text"线'从30到50的文件? 我一行一行地做了这个:

cat filename.log.50 |grep 'sending data' >> new_file.log
cat filename.log.49 |grep 'sending data' >> new_file.log
cat filename.log.48 |grep 'sending data' >> new_file.log
....
....

我在想这个......

cat filename.log.5* |grep 'sending data' >> new_file.log
cat filename.log.4* |grep 'sending data' >> new_file.log
cat filename.log.3* |grep 'sending data' >> new_file.log

但是这将包括filename.log.5,filename.log.4,filename.log.3

3 个答案:

答案 0 :(得分:2)

我改为使用循环:

for i in {30..50}; do
  grep 'sending data' "filename.log.$i"
done > new_file.log

答案 1 :(得分:1)

例如,你可以使用它:

grep 'sending data' file.log{[34][0-9],50} >> new_file.log

将匹配从30到50的所有内容。

如果这对您不起作用,则分为两个区块:

grep 'sending data' file.log[34][0-9] >> new_file.log
grep 'sending data' file.log50 >> new_file.log

[34][0-9]匹配3049

答案 2 :(得分:0)

这是一个简单的方法:

seq -f "filename.log.%.f" 50 30 | xargs grep "sending data" > new_file.log