如何用SH脚本实现从一个文件中取出指定的行?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用SH脚本实现从一个文件中取出指定的行?相关的知识,希望对你有一定的参考价值。

文件1: 239526 121.229.53.235 2008-08-22 11:19:54 303226 122.159.17.142 2008-08-22 16:58:45 文件2: 116.21.145.143 239526,20080822,221.210.29.137 1615383,20080822要从文件2中取出满足条件:文件2中的第二个字段在文件1中第一个字段中存在的行,如239526 最后形成文件3: 116.21.145.143 239526,20080822

参考技术A #!/bin/sh
FILE1=tmp1
FILE2=tmp2
FILE3=tmp3
rm -f $FILE3
while read IP NUMS //把文件2的内容截成两段, IP和后面的数
do
num1=`echo $NUMS|cut -d',' -f1` //截出第一个数
cut -d' ' -f1 $FILE1 | grep $num1 >> /dev/null //在第一个文件的第一个字段中查询第一个数
if [ $? -eq 0 ]
then
echo "$IP $NUMS" >> $FILE3 //如果找到了就把这行输出到文件三中
fi
done<$FILE2
参考技术B 一句话可以搞定:

[seesea@UC ~]$ cat file1.txt
239526 121.229.53.235 2008-08-22 11:19:54
303226 122.159.17.142 2008-08-22 16:58:45
[seesea@UC ~]$ cat file2.txt
116.21.145.143 239526,20080822
221.210.29.137 1615383,20080822
[seesea@UC ~]$ grep -f <(cat file2.txt | tr "," " " | cut -d" " -f2) file1.txt
239526 121.229.53.235 2008-08-22 11:19:54

---------
好像弄反了,不过你自己根据上面的原理弄一下吧,下班了不弄啦,赶车去

-------------------
反一下,从 file1 里找 file2 的行,要弄成文件再加一个重定向:
[seesea@UC ~]$ grep -f <(cut -d" " -f1 file1.txt) file2.txt
116.21.145.143 239526,20080822
[seesea@UC ~]$ grep -f <(cut -d" " -f1 file1.txt) file2.txt > file3.txt
[seesea@UC ~]$ cat file3.txt
116.21.145.143 239526,20080822

如何用python将数据写入excel表格

用python写的测试脚本,想直接将测试结果写入excel表格中。

简单的介绍一下这两个库,先说xlrd,这个库读Excel比较方便,各种方法使用起来也挺方便:
bk = xlrd.open_workbook('your.xls')
sh = bk.sheets()[-1]
上面两句就可以打开Excel表格中的一个sheet,sheets得到的是一个list,存放所有的sheet。
sh.nrows是该sheet中的行数,知道这个后就可以使用for循环来读所有的单元格了:
sh.row(i)[3]这个就代表第i行的第4列。
再看看pyExcelerator,这个用起来有点别扭:
sheets = parse_xls('result.xls')
先打开一个表格,sheets是一个list,包含了所有表格的内容,每一项就是一个sheet,而每个sheet是二元tuple,第一个是该sheet的名字,第二个是一个dict,dict的key是一个二元组,表示单元格的坐标,如(0,0),第一行第一列。
从上面的分析中可以得出要访问Excel中第一个sheet的第一行第一列元素需要:
sheets[0][1][(0,0)]
pyExcelerator也不能得到行列数。
写文件也比较简单:
wb = Workbook()
ws = wb.add_sheet('result')
ws.write(0,0,“hello”)
wb.save('result.xls')
就不解释了:-)
写文件时需要注意直接写Unicode内容进去,而不要写编码过的内容。
本文来源于可可熊的窝 http://cocobear.info/blog , 原文地址:

参考资料:http://cocobear.info/blog/2009/01/16/use-python-deal-with-excel/

参考技术A 首先下载win2com模块,在Python 3.1下运行一下代码即可,随意转载但希望注明:CD-one的实例+注解

from win32com.client import Dispatch

xlApp = Dispatch('Excel.Application')
xlApp.Visible = 1#显示
xlApp.Workbooks.Add()#添加工作本
#在(1,1)这个单元格中填入‘Python’这个字符串
xlApp.ActiveSheet.Cells(1,1).Value = 'Python'

xlSheet = xlApp.ActiveSheet

#在(2,1)这个单元格中填入‘3’这个数字
xlSheet.Cells(2,1).Value = 3
#把A2*2这个表达式填入(4,1)这个单元格
xlSheet.Cells(4,1).Formula = '=A2*2'
#输出A1到A5的值
xlSheet.Range("A1:A5").Value
#改变(1,1)这个单元格的背景色
xlSheet.Cells(1,1).Interior.ColorIndex = 3
参考技术B python 多线程调用excel时会出错

参考资料:http://zcut.net/archives/8b8875e419dd55f1205f6646ff50eafc.html

以上是关于如何用SH脚本实现从一个文件中取出指定的行?的主要内容,如果未能解决你的问题,请参考以下文章

如何用shell来实现定期删除一个月前的日志?

如何用python将数据写入excel表格

如何用SQL语句取出数据库中的特定一条数据?

如何用C语言文件操作修改指定文件

如何用php取出数据库表中一列所有数据?

如何用Python爬取出HTML指定标签内的文本?