怎麼修改shell腳本中的內容
❶ 求助shell腳本修改xml的值
假設你的內容在1.xml中,執行這個命令就行了(先備份一份原文件,-i參數會直接將結果覆蓋到原文件上):
sed -i 's/\(\svalue=\"\)[^\"]*\"/\1ccc\"/;s/\(\sdefaultValue=\"\)[^\"]*\"/\1ccc\"/;' 1.xml
❷ 如何在shell腳本中修改添加替換指定文件中的內容
1、可以藉助於shell命令執行另一個腳本文件或者用變數保存。比如a.sh和b.sh,a.sh中調用b.sh的代碼,一起輸出"hello world"的字元串。b.sh的代碼如下echo " world!"。
❸ 使用shell腳本替換與更新文件里的一段內容,可以使用sed, awk等linux工具
我也給個思路吧 —— 用sed根據地址范圍截取文件內容,用Here documents方法添加新的多行內容,然後重組文件。具體步驟如下:
1)截取test.xml文件起始行到<abcdef>行,保存到tmp文件;
2)將要添加的內容根據變數值展開,附加寫入tmp文件;
3)截取test.xml文件</abcdef>行到結束行,附加寫入tmp文件。
4)移動tmp文件覆蓋test.xml文件。
代碼:
#!/bin/sh
$hostnames="host1,host2,host3..."
$paragraph="many_strings"
sed-n'1,/^<abcdef>/p'test.xml>tmp
cat<<EOF>>tmp
forhnamein`echo"$hostnames"|tr','''`
do
insert$hname
insert$paragraph
done
EOF
sed-n'/^</abcdef>/,$p'test.xml>>tmp
mvtmptest.xml
注意:
1) for a in b 結構中,b集合里的內容必需要空格分隔。所以我這里做了轉換,用tr命令將逗號分隔改為了空格分隔。
2)第二個EOF必需頂格寫,前面不能有空格。
❹ shell 腳本編寫修改文件
修改腳本中的對應變數可以實現替換內容的修改,具體實現如下:
#!/usr/bin/env bash
PASS_MAX_DAYS=90
PASS_MIN_DAYS=2
PASS_MIN_LEN=8
PASS_WARN_AGE=7
login_path="/etc/login.defs"
pwquality_path="/etc/security/pwquality.conf"
if [ -f $login_path ]; then
sed -i -E "s/(^PASS_MAX_DAYS.)[0-9]+/1$PASS_MAX_DAYS/g" $login_path
sed -i -E "s/(^PASS_MIN_DAYS.)[0-9]+/1$PASS_MIN_DAYS/g" $login_path
sed -i -E "s/(^PASS_MIN_LEN.)[0-9]+/1$PASS_MIN_LEN/g" $login_path
sed -i -E "s/(^PASS_WARN_AGE.)[0-9]+/1$PASS_WARN_AGE/g" $login_path
echo "完成$login_path文件的替換"
else
echo "$login_path 文件不存在,請檢查配置"
fi
if [ -f $pwquality_path ]; then
echo password requisite pam_cracklib.so minlen=8 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1 >>$pwquality_path
echo account required /lib/securtiy/pam tally.so deny=5 no_magic_root reset >>$pwquality_path
echo "對$pwquality_path完成追加"
else
echo "$pwquality_path 文件不存在,請檢查配置"
fi
❺ Linux下的shell編程 如何替換文件中的內容
可以這樣做:
方法1:sed -i 's/被替換的內容/要替換成的內容/' file
方法2:sed 's/被替換的內容/要替換成的內容/g' file > file.out;mv file.out file。
(5)怎麼修改shell腳本中的內容擴展閱讀:
Shell編程的常用技巧:
一、自動補齊:在linux中對於命令或路徑,可以TAB鍵進行自動補全,以下事項需要注意:
1、只存在一個該輸入字元開頭的命令或路徑,此時自動補全;
2、存在多個該輸入字元開頭的命令或路徑,此時第一次點擊TAB鍵無效,此時再次點擊TAB會羅列出所有該字元開頭的命令或路徑,繼續輸入直到僅僅剩一個時自動補全;
3、如果命令已經是完整的,TAB鍵則是本來的移動功能;而路徑的話要看命令自身的行為決定後續動作。
二、歷史命令
1、history命令可以顯示歷史執行過的命令;
2、使用!+序號執行該序號對應的命令;
3、使用!+字元執行該字元開頭的最後一次執行的指令。
三、命令別名
1、實現別名:alias ddd="df -Th";
2、刪除別名:unalias ddd;
3、顯示所有別名命令列表:alias;
4、存放位置:~/.bashrc (加入該文件後,重啟後不會消失)。
四、重定向
1、重定向標准輸入:< 命令接收輸入的途徑由鍵盤改為文件;
2、重定向標准輸出:> 將命令的執行結果輸出到指定文件,而不是直接顯示到屏幕;
3、重定向標准輸出:>> 將命令的執行結果追加輸出到指定文件;
4、重定向標准錯誤:2> 清除指定文件的內容,並把標准錯誤信息保存到指定文件;
5、重定向標准錯誤:2>> 標准錯誤信息追加到指定文件;
6、重定向標准輸出和標准錯誤:&> 將標准輸出、標准錯誤信息全部保存到指定文件,而不是直接顯示在屏幕上。
❻ shell腳本替換A、B兩個文件裡面的內容
先讀取A文件中那行內容,然後通過awk獲取B文件中的第五行內容,替換後重新覆蓋寫入A文件。
代碼如下:
#!/bin/sh
A=/usr/123.txt
B=/tem/456.conf
read line <$A
awk -v a=$line 'NR==5{print $1"\t"a}' $B >$A
❼ 怎麼通過你shell腳本刪除文件的某一行以及後面幾行
1、啟動Linux系統,用ssh工具(xshell或者SecureCRT等)連上Linux系統。