在awk中執行system命令------太有用了

stpeace發表於2017-12-05

        有這樣一個臨時需求: 在a.txt檔案中有一萬行字串, 而二進位制檔案test能解密任何一行, 格式為./test decrypt xxx,  現在要把a.txt的所有行解密出來, 存放在b.txt, 怎麼搞?

        我一開始的思路是: 寫程式逐行讀取a.txt, 然後在程式中迴圈執行system("./test decrypt xxx"),  看看, 這是多個SB的事情啊。 為什麼不用awk + system快速搞起呢?

        如下:

ubuntu@VM-0-13-ubuntu:~$ cat a.txt
abc
def
ok
ubuntu@VM-0-13-ubuntu:~$ 
ubuntu@VM-0-13-ubuntu:~$ 
ubuntu@VM-0-13-ubuntu:~$ 
ubuntu@VM-0-13-ubuntu:~$ awk '{cmd="echo hehe "$0; system(cmd)}' a.txt
hehe abc
hehe def
hehe ok
ubuntu@VM-0-13-ubuntu:~$ 

       所以, 在我那個實際例子, 可以這麼搞:

 awk '{cmd="./test decrypt "$0; system(cmd)}' a.txt  > b.txt 

       本來以為要半個小時, 結果5分鐘搞定。





相關文章