当前位置: 技术问答>linux和unix
请教一个去掉重复行的脚本
来源: 互联网 发布时间:2016-02-23
本文导语: 如下: Dec 25 15:55:51 : iscsi_tx_1 UnsolData 0, data_len 4096, data_done 0, r2t_data_left 0 Dec 25 15:55:51 : ITT: 0xffffffff Dec 25 15:55:51 : Leave do_iscsi_rx_data Dec 25 15:55:51 : Leave free_r2t_cookie Dec 25 15:55:51 : Leave free_targ_...
如下:
Dec 25 15:55:51 : iscsi_tx_1 UnsolData 0, data_len 4096, data_done 0, r2t_data_left 0
Dec 25 15:55:51 : ITT: 0xffffffff
Dec 25 15:55:51 : Leave do_iscsi_rx_data
Dec 25 15:55:51 : Leave free_r2t_cookie
Dec 25 15:55:51 : Leave free_targ_buf
Dec 25 15:55:51 : Leave handle_iscsi_rx_data
Dec 25 15:55:51 : MaxCmdSN: 22243
Dec 25 15:55:51 : Opcode: 0x00, I: 1
Dec 25 15:55:51 : Opcode: 0x20, I: 0
Dec 25 15:55:51 : scsi cmnd 00000000, init_task_tag -1 target_xfer_tag 21 data_done 0 xfer length 0
Dec 25 15:55:51 : Search found the command
Dec 25 15:55:51 : set dequeue command statsn 19, received exp_stat_sn 20, command state 5
Dec 25 15:55:51 : StatSN: 20
Dec 25 15:55:51 : TTT: 21
。。。。
Dec 25 15:52:51 : iscsi_tx_1 handled 0 commands
Dec 25 15:52:51 : iscsi_tx_1 awake, session c8534d80, conn c3874e80
Dec 25 15:52:51 : iscsi_tx_1 handled 0 commands
Dec 25 15:52:51 : iscsi_tx_1 awake, session c8534d80, conn c3874e80
Dec 25 15:52:51 : iscsi_tx_1 handled 0 commands
Dec 25 15:52:51 : iscsi_tx_1 awake, session c8534d80, conn c3874e80
Dec 25 15:52:51 : iscsi_tx_1 handled 0 commands
Dec 25 15:52:51 : iscsi_tx_1 awake, session c8534d80, conn c3874e80
Dec 25 15:52:51 : iscsi_tx_1 handled 0 commands
Dec 25 15:52:51 : iscsi_tx_1 awake, session c8534d80, conn c3874e80
Dec 25 15:52:51 : iscsi_tx_1 handled 0 commands
Dec 25 15:52:51 : iscsi_tx_1 awake, session c8534d80, conn c3874e80
Dec 25 15:52:51 : iscsi_tx_1 handled 0 commands
Dec 25 15:52:51 : iscsi_tx_1 awake, session c8534d80, conn c3874e80
Dec 25 15:52:51 : iscsi_tx_1 handled 0 commands
Dec 25 15:52:51 : iscsi_tx_1 awake, session c8534d80, conn c3874e80
Dec 25 15:52:51 : iscsi_tx_1 handled 0 commands
Dec 25 15:52:51 : iscsi_tx_1 awake, session c8534d80, conn c3874e80
Dec 25 15:52:51 : iscsi_tx_1 handled 0 commands
Dec 25 15:52:51 : iscsi_tx_1 awake, session c8534d80, conn c3874e80
Dec 25 15:52:51 : iscsi_tx_1 handled 0 commands
Dec 25 15:52:51 : iscsi_tx_1 awake, session c8534d80, conn c3874e80
Dec 25 15:52:51 : iscsi_tx_1 handled 0 commands
+++++++++++++++++++++++++=
输出:
Dec 25 15:55:51 : iscsi_tx_1 UnsolData 0, data_len 4096, data_done 0, r2t_data_left 0
Dec 25 15:55:51 : ITT: 0xffffffff
Dec 25 15:55:51 : Leave do_iscsi_rx_data
Dec 25 15:55:51 : Leave free_r2t_cookie
Dec 25 15:55:51 : Leave free_targ_buf
Dec 25 15:55:51 : Leave handle_iscsi_rx_data
Dec 25 15:55:51 : MaxCmdSN: 22243
Dec 25 15:55:51 : Opcode: 0x00, I: 1
Dec 25 15:55:51 : Opcode: 0x20, I: 0
Dec 25 15:55:51 : scsi cmnd 00000000, init_task_tag -1 target_xfer_tag 21 data_done 0 xfer length 0
Dec 25 15:55:51 : Search found the command
Dec 25 15:55:51 : set dequeue command statsn 19, received exp_stat_sn 20, command state 5
Dec 25 15:55:51 : StatSN: 20
Dec 25 15:55:51 : TTT: 21
。。。
Dec 25 15:52:51 : iscsi_tx_1 awake, session c8534d80, conn c3874e80
Dec 25 15:52:51 : iscsi_tx_1 handled 0 commands
需要将这些2行一重复的去掉(时间不相同的也算重复的),当然保留一份更好。
不要简单的以为用cat file | uniq就可以了,这是2行一重复。
也不要改变时间顺序。
能有人写出来,感激不敬!
Dec 25 15:55:51 : iscsi_tx_1 UnsolData 0, data_len 4096, data_done 0, r2t_data_left 0
Dec 25 15:55:51 : ITT: 0xffffffff
Dec 25 15:55:51 : Leave do_iscsi_rx_data
Dec 25 15:55:51 : Leave free_r2t_cookie
Dec 25 15:55:51 : Leave free_targ_buf
Dec 25 15:55:51 : Leave handle_iscsi_rx_data
Dec 25 15:55:51 : MaxCmdSN: 22243
Dec 25 15:55:51 : Opcode: 0x00, I: 1
Dec 25 15:55:51 : Opcode: 0x20, I: 0
Dec 25 15:55:51 : scsi cmnd 00000000, init_task_tag -1 target_xfer_tag 21 data_done 0 xfer length 0
Dec 25 15:55:51 : Search found the command
Dec 25 15:55:51 : set dequeue command statsn 19, received exp_stat_sn 20, command state 5
Dec 25 15:55:51 : StatSN: 20
Dec 25 15:55:51 : TTT: 21
。。。。
Dec 25 15:52:51 : iscsi_tx_1 handled 0 commands
Dec 25 15:52:51 : iscsi_tx_1 awake, session c8534d80, conn c3874e80
Dec 25 15:52:51 : iscsi_tx_1 handled 0 commands
Dec 25 15:52:51 : iscsi_tx_1 awake, session c8534d80, conn c3874e80
Dec 25 15:52:51 : iscsi_tx_1 handled 0 commands
Dec 25 15:52:51 : iscsi_tx_1 awake, session c8534d80, conn c3874e80
Dec 25 15:52:51 : iscsi_tx_1 handled 0 commands
Dec 25 15:52:51 : iscsi_tx_1 awake, session c8534d80, conn c3874e80
Dec 25 15:52:51 : iscsi_tx_1 handled 0 commands
Dec 25 15:52:51 : iscsi_tx_1 awake, session c8534d80, conn c3874e80
Dec 25 15:52:51 : iscsi_tx_1 handled 0 commands
Dec 25 15:52:51 : iscsi_tx_1 awake, session c8534d80, conn c3874e80
Dec 25 15:52:51 : iscsi_tx_1 handled 0 commands
Dec 25 15:52:51 : iscsi_tx_1 awake, session c8534d80, conn c3874e80
Dec 25 15:52:51 : iscsi_tx_1 handled 0 commands
Dec 25 15:52:51 : iscsi_tx_1 awake, session c8534d80, conn c3874e80
Dec 25 15:52:51 : iscsi_tx_1 handled 0 commands
Dec 25 15:52:51 : iscsi_tx_1 awake, session c8534d80, conn c3874e80
Dec 25 15:52:51 : iscsi_tx_1 handled 0 commands
Dec 25 15:52:51 : iscsi_tx_1 awake, session c8534d80, conn c3874e80
Dec 25 15:52:51 : iscsi_tx_1 handled 0 commands
Dec 25 15:52:51 : iscsi_tx_1 awake, session c8534d80, conn c3874e80
Dec 25 15:52:51 : iscsi_tx_1 handled 0 commands
+++++++++++++++++++++++++=
输出:
Dec 25 15:55:51 : iscsi_tx_1 UnsolData 0, data_len 4096, data_done 0, r2t_data_left 0
Dec 25 15:55:51 : ITT: 0xffffffff
Dec 25 15:55:51 : Leave do_iscsi_rx_data
Dec 25 15:55:51 : Leave free_r2t_cookie
Dec 25 15:55:51 : Leave free_targ_buf
Dec 25 15:55:51 : Leave handle_iscsi_rx_data
Dec 25 15:55:51 : MaxCmdSN: 22243
Dec 25 15:55:51 : Opcode: 0x00, I: 1
Dec 25 15:55:51 : Opcode: 0x20, I: 0
Dec 25 15:55:51 : scsi cmnd 00000000, init_task_tag -1 target_xfer_tag 21 data_done 0 xfer length 0
Dec 25 15:55:51 : Search found the command
Dec 25 15:55:51 : set dequeue command statsn 19, received exp_stat_sn 20, command state 5
Dec 25 15:55:51 : StatSN: 20
Dec 25 15:55:51 : TTT: 21
。。。
Dec 25 15:52:51 : iscsi_tx_1 awake, session c8534d80, conn c3874e80
Dec 25 15:52:51 : iscsi_tx_1 handled 0 commands
需要将这些2行一重复的去掉(时间不相同的也算重复的),当然保留一份更好。
不要简单的以为用cat file | uniq就可以了,这是2行一重复。
也不要改变时间顺序。
能有人写出来,感激不敬!
|
这个问题用python最简单:
#!/usr/bin/env python
f=open('file_in.txt','r')
lines=f.readlines()
uniq_lines=[]
for line in lines:
if line not in uniq_lines:
uniq_lines.append(line)
f2=open('file_out.txt','w')
f2.writelines(uniq_lines)
f.close()
f2.close()
另外,这个问题的需求不适合用uniq解决,因为uniq只能解决相邻两行重复的行,
如果要用uniq的话,要先用sort排序,这样就必定破坏输入的时间顺序,而这个问题
显然是要保持时间顺序的。
#!/usr/bin/env python
f=open('file_in.txt','r')
lines=f.readlines()
uniq_lines=[]
for line in lines:
if line not in uniq_lines:
uniq_lines.append(line)
f2=open('file_out.txt','w')
f2.writelines(uniq_lines)
f.close()
f2.close()
另外,这个问题的需求不适合用uniq解决,因为uniq只能解决相邻两行重复的行,
如果要用uniq的话,要先用sort排序,这样就必定破坏输入的时间顺序,而这个问题
显然是要保持时间顺序的。