奇偶行合并,python命令行研究和awk簡易方法

python命令行學(xué)習(xí)了一下就想拿這個(gè)錘子去敲所有的釘子,然而事實(shí)證明還是太年輕。

發(fā)現(xiàn)Python2和python3在利用循環(huán)時(shí)還有些不同。。。

需求是一個(gè)文本,把奇偶行合并重新輸出

windows的python3下

PS C:\Users\Administrator\Desktop> gc .\testfile.txt
host1
121234
host2
121235
host3
121236
host4
121237
host5
121238
host6
121239
host7
121240
host8
121241
host9
121242
host10
121243
PS C:\Users\Administrator\Desktop> python -c "file=open('testfile.txt','r');content=file.read();conlist=content.split('\n');[print(conlist[i] + ' : ' + conlist[i+1]) for i in range(0,len(conlist),2)]"
host1 : 121234
host2 : 121235
host3 : 121236
host4 : 121237
host5 : 121238
host6 : 121239
host7 : 121240
host8 : 121241
host9 : 121242
host10 : 121243

但是在linux的python2下面,相同的語法是不對的

[vagrant@amainst perltest]$ cat testfile
host1
121234
host2
121235
host3
121236
host4
121237
host5
121238
host6
121239
host7
121240
host8
121241
host9
121242
host10
121243
[vagrant@amainst perltest]$ python -c "file=open('testfile','r');content=file.read();conlist=content.split('\n');[print conlist[i] + ' : ' + conlist[i+1] for i in range(0,len(conlist),2)]"
  File "<string>", line 1
    file=open('testfile','r');content=file.read();conlist=content.split('\n');[print conlist[i] + ' : ' + conlist[i+1] for i in range(0,len(conlist),2)]
                                                                                   ^
SyntaxError: invalid syntax

去掉[]符號試試

[vagrant@amainst perltest]$ python -c "file=open('testfile.txt','r');content=file.read();conlist=content.split('\n');print conlist[i] + ' : ' + conlist[i+1] for i in range(0,len(conlist),2)"
  File "<string>", line 1
    file=open('testfile.txt','r');content=file.read();conlist=content.split('\n');print conlist[i] + ' : ' + conlist[i+1] for i in range(0,len(conlist),2)
                                                                                                                            ^
SyntaxError: invalid syntax

一樣不對,原因是什么我不知道啦,反正循環(huán)寫法是無法使用了,只能換一種思路去解決了,搜索了commandLineFu這個(gè)命令行網(wǎng)站,發(fā)現(xiàn)循環(huán)的寫法用的是python的join方法,終于成功

[vagrant@amainst perltest]$ python -c "file=open('testfile','r');content=file.read();conlist=content.split('\n');conlist.remove('');print '\n'.join(conlist[i] + ' : ' + conlist[i+1] for i in range(0,len(conlist),2))"
host1 : 121234
host2 : 121235
host3 : 121236
host4 : 121237
host5 : 121238
host6 : 121239
host7 : 121240
host8 : 121241
host9 : 121242
host10 : 121243

以后碰到python2環(huán)境的時(shí)候,要裝逼命令行python解決問題,循環(huán)只能用join了。

至于標(biāo)題說的awk簡易方法,awk有個(gè)保留字getline,這樣就是很簡單的一個(gè)寫法。

[vagrant@amainst perltest]$ awk '{getline a;print $0" : "a}' testfile
host1 : 121234
host2 : 121235
host3 : 121236
host4 : 121237
host5 : 121238
host6 : 121239
host7 : 121240
host8 : 121241
host9 : 121242
host10 : 121243

在文本處理中,知道每個(gè)工具的方法處理起來更快,但如果只專精于一項(xiàng),那就請顧及版本的問題。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容