我有幾個包含IP地址的文件。我正在創建一個腳本,並且必須弄清楚如何使用基於它之前創建的文件的IP地址創建一個新的用戶文件。如果最後一個文件包含A.B.C.D的IP,則新文件需要是A.B.C.(D + 4)。在Bash中編輯文件
我想我需要使用「的sed」和「awk的」命令,但一直沒能得到任何工作。我將如何去寫這部分腳本?
我有幾個包含IP地址的文件。我正在創建一個腳本,並且必須弄清楚如何使用基於它之前創建的文件的IP地址創建一個新的用戶文件。如果最後一個文件包含A.B.C.D的IP,則新文件需要是A.B.C.(D + 4)。在Bash中編輯文件
我想我需要使用「的sed」和「awk的」命令,但一直沒能得到任何工作。我將如何去寫這部分腳本?
這裏的東西,讓你開始:假設有一個名爲input
文件看起來像這樣:
:
:中內容input
127.0.0.1
127.0.0.2
127.0.0.3
127.0.0.200
您可以在CMDLINE做
awk 'BEGIN{FS=OFS="."} {$4=$4+4; print}' input > output
說明什麼awk是在這裏做什麼:
awk '...'
- 調用AWK,主要用於行由行文件操作的工具,用單引號包圍的東西是awk的指令。BEGIN{FS=OFS="."}
- 告訴AWK使用.
作爲分隔符的輸入和輸出。 FS
代表「字段分隔符」{$4=$4+4; print}
- $4
就是第四場。由於.
是分隔符,因此D
對應於第4個字段,我們將整數值4
添加到第4個字段。這裏的print
只是印刷整條生產線的簡稱。input
- 命名輸入文件作爲參數傳遞給AWK;救貓> output
- 輸出重定向到一個文件,這樣就可以使得基於其上的用戶文件之前檢查他們的任何問題。輸出:中output
127.0.0.5
127.0.0.6
127.0.0.7
127.0.0.204
然後內容可以一次讀取output
一行來根據需要創建新的用戶文件,隨着線的東西,也許另一個腳本:
while read line
do
echo "this is a user file" > "$line"
done < output
(並調整到你的需求)
最後,只要你明白這是怎麼回事在上面,你可以完全跳過output
文件,只是做這一切在一個班輪:
awk 'BEGIN{FS=OFS="."} {$4=$4+4; print}' input | while read line; do echo "hello world" > "$line"; done
謝謝!這幫了我很多,尤其是你的解釋 – fixdrift
@fixdrift很高興幫助! =) –
會發生什麼,如果'd + 4> 255 '? – kojiro
哈!我問,他們說我們會處理它。公平地說,它會有一段時間纔會達到那麼高的水平。 – fixdrift
這就是Y2K發生的情況。 – kojiro