Shell指令碼sed命令修改檔案的某一行

2022-06-11 11:42:10 字數 733 閱讀 4700

使用shell指令碼自動化調參需要對檔案進行修改

最初想到呼叫python進行字串處理,通過正規表示式匹配然後修改,比較麻煩

偶然發現shell其實自帶sed命令可以處理這個問題

#!/bin/bash

sed -i "26c delay = $1" camera.lua

執行上述指令碼./calib.sh 250即可將camera.lua配置檔案的第26行改寫為delay = 250

若寫入字串中存在雙引號則需要通過\"進行轉義

#!/bin/bash

sed -i "2c name = \"mycam\"" camera.lua

sed -n '26p' camera.lua  #顯示camera.lua的第26行內容
新增-i引數可對檔案直接進行修改(慎用)

$ ./calib.sh 1 2 3
$0在shell指令碼中用於獲取傳入命令的引數,其中$0./calib.sh即命令本身

$1為第乙個引數,值為1

以此類推$2$3

Shell指令碼sed命令

1 p命令 命令p用於顯示模式空間的內容。預設情況下,sed把輸入行列印在螢幕上,選項 n用於取消預設的列印操作。當選項 n和命令p同時出現時,sed可列印選定的內容。例子 plain view plain copy 1 sed my p datafile 預設情況下,sed把所有輸入行都列印在標準...

shell指令碼工具之sed命令

sed就是批處理的流編輯器,可以對來自檔案或標準輸入的輸入流進行轉換,sed通常被用作管道中的過濾器.由於sed僅僅對其輸入進行一遍掃瞄,因此比其它互動式編輯器更加高效.檔案內容 root tong1 opt cat sed.txt 1tong 2 cheng 3 hellow 4word wu h...

sed命令例項 shell指令碼入門

什麼是 sed?sed是乙個很好的檔案處理工具,本身是乙個管道命令,主要以行為單位進行處理,可以將資料行進行替換 刪除 新增 選取等特定工作。sed 選項 命令 n,使用安靜 silent 模式。在一般 sed 的用法中,所有來自 stdin 的資料一般都會被列出到終端上。但如果加上 n 引數後,則...