1. 程式人生 > >linux sed 命令總結

linux sed 命令總結

下面是網上查詢到的例子:

sed -i ':a;/^+/{s/.*/+ X/;n;n;s/.*/+ X/};n;ba' file.txt

按順序解釋如下:

名稱 註釋
:a 設定一個標籤a
/^+/ 若匹配行首為+
s/.*/+ X/ 替換當前行為+ X
n;n; 讀入下一行;再讀入下一行
s/.*/+ X/ 再次替換當前行為+ X
n; 讀入下一行
ba 跳轉到標籤a,相當於goto語句,這樣構成迴圈,直到檔案處理結束

按照上面的方法自己的例程中應用:

sed -i '/^TFTP_DIRECTORY/{s#.*#TFTP_DIRECTORY
="/opt/tftp"#}' /etc/default/tftpd-hpa
sed -i '/^TFTP_OPTIONS/{s#.*#TFTP_OPTIONS="-l -c -s"#}' /etc/default/tftpd-hpa

替換/etc/default/tftpd-hpd 中的兩行:

cat /etc/default/tftpd-h

前:

#/etc/default/tftpd-hpa
TFTP_USERNAME=”tftp”
TFTP_DIRECTORY=”/var/tftproot”
TFTP_ADDRESS=”[::]:69”
TFTP_OPTIONS=”–section”

後:

#/etc/default/tftpd-hpa
TFTP_USERNAME=”tftp”
TFTP_DIRECTORY=”/opt/tftp”
TFTP_ADDRESS=”[::]:69”
TFTP_OPTIONS=”-l -c -s”