1. 程式人生 > >awk中呼叫系統命令批量處理

awk中呼叫系統命令批量處理

工作中經常遇到在輸入一堆檔名的條件下,將其移動或者刪除或者複製。由於輸入是個檔名的集合,而不是單個檔案,因此不能直接用cp或者mv命令,可以通過awk的逐行處理的功能來處理這種情況。以下是一個例子:

$ grep -r 'TE' * | cut -d " " -f3 | awk '{system("mv "$1" ./English_mlfs/")}'

1. grep,在當前資料夾內的檔案中查詢含有TE這兩個字元的檔案。注意,如果系統認為檔案是文字檔案,就會同時顯示檔名和含有TE的那一行,如果認為是binary檔案,就會只顯示檔名,表示在某個檔案中找到了。

2. grep的輸出結果是以空格隔開的,其中檔名在第三列,所以用cut來獲取檔名列表

3. 在awk中呼叫bash命令的方法很簡單,就使用system()函式,輸入為要執行的命令的字串。$1表示第一列的資料,也就是檔名。

以後可以用awk和呼叫系統命令的方法來批量處理檔案咯!這樣就可以省掉很多手工操作,也不用麻煩的去寫指令碼檔案來處理這種簡單又經常遇到的任務了!