我有多个这样的文件。
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
答案 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]
匹配30
到49
。
答案 2 :(得分:0)
这是一个简单的方法:
seq -f "filename.log.%.f" 50 30 | xargs grep "sending data" > new_file.log