我正在創建一個 shell 腳本,它讀取以下list.log
1.15.2.119
1.15.86.33
1.15.251.60
1.20.178.145/31
1.37.33.24
1.54.202.216
1.58.10.126/28
1.80.225.84
1.116.240.174/30
我想在所有 IP 的末尾添加一個 /32 IP,除了已經存在 /32 的那些。
例子:
1.14.191.227/32
1.15.2.119/32
1.15.86.33/32
1.15.251.60/32
1.20.178.145/31
1.37.33.24/32
1.54.202.216/32
1.58.10.126/28
1.80.225.84/32
1.116.240.174/30
我的回報是 /32 的兩倍
cat list.log | sed 's/$/\/32/'
1.14.191.227/32
1.15.2.119/32
1.15.86.33/32
1.15.251.60/32
1.20.178.145/31/32
1.37.33.24/32
1.54.202.216/32
1.58.10.126/28/32
1.80.225.84/32
1.116.240.174/30/32
uj5u.com熱心網友回復:
您可以添加/32到不包含的行的末尾/
sed '\,/,!s,$,/32,' list.log > newlist.log
詳情:
\,/,!- 查找不包含的行/s,$,/32,- 并用那里替換字串位置的結尾/32。
查看在線演示:
#!/bin/bash
s='1.15.2.119
1.15.86.33
1.15.251.60
1.20.178.145/31
1.37.33.24
1.54.202.216
1.58.10.126/28
1.80.225.84
1.116.240.174/30'
sed '\,/,!s,$,/32,' <<< "$s"
輸出:
1.15.2.119/32
1.15.86.33/32
1.15.251.60/32
1.20.178.145/31
1.37.33.24/32
1.54.202.216/32
1.58.10.126/28
1.80.225.84/32
1.116.240.174/30
uj5u.com熱心網友回復:
這可以很容易地完成awk,請嘗試以下awk程式。使用所示樣本進行撰寫和測驗。
awk '!/\/32$/{$0=$0"/32"} 1' Input_file
說明:簡單的解釋是,檢查條件是否行不以/32然后添加/32到當前行并提及1將列印已編輯/未編輯的當前行。
uj5u.com熱心網友回復:
使用sed
$ sed 's|\.[0-9]\ $|&/32|' list.log
1.15.2.119/32
1.15.86.33/32
1.15.251.60/32
1.20.178.145/31
1.37.33.24/32
1.54.202.216/32
1.58.10.126/28
1.80.225.84/32
1.116.240.174/30
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/465450.html
上一篇:如何在bash中的模式后裁剪文本
