需要這一個幫助更換一條線,我試圖替換包含通配符sed中含有通配符
原單文件的一行:
command[check_cpu]=/usr/local/nagios/libexec/check_aix_cpu.pl $ARG1$ $ARG2$
它需要被替換
command[check_cpu]=/usr/local/nagios/libexec/check_aix_cpu.pl -w $ARG1$ -c $ARG2$
需要這一個幫助更換一條線,我試圖替換包含通配符sed中含有通配符
原單文件的一行:
command[check_cpu]=/usr/local/nagios/libexec/check_aix_cpu.pl $ARG1$ $ARG2$
它需要被替換
command[check_cpu]=/usr/local/nagios/libexec/check_aix_cpu.pl -w $ARG1$ -c $ARG2$
像這樣的東西可以使它:
sed 's/\([$A-Z0-9]*\) \([$A-Z0-9]*\)$/-w \1 -c \2/' file
它獲得最後兩個單詞塊(可能的字符:A-Z0-9$
)並將它們打印回格式爲-w BLOCK1 -c BLOCK2
。
輸出如下:
command[check_cpu]=/usr/local/nagios/libexec/check_aix_cpu.pl -w $ARG1$ -c $ARG2$
希望我理解你的權利,請檢查以下awk
和sed
的俏皮話:
kent$ cat f
command[check_cpu]=/usr/local/nagios/libexec/check_aix_cpu.pl $ARG1$ $ARG2$
kent$ awk '{$2="-w "$2;$3="-c "$3}7' f
command[check_cpu]=/usr/local/nagios/libexec/check_aix_cpu.pl -w $ARG1$ -c $ARG2$
kent$ sed -r 's/ \S+/-w&-c /' f
command[check_cpu]=/usr/local/nagios/libexec/check_aix_cpu.pl -w $ARG1$ -c $ARG2$
在最後一個sed上,假設行中沒有其他「空格」(在命令或路徑/文件或$中ARG值)。做得太好了 – NeronLeVelu
你嘗試過什麼?它是如何去的?一般來說,在不顯示任何企圖的情況下提出問題會非常糟糕。 –
嗨,我試過這些,它不適合我sed's/command [check_cpu] =/usr/local/nagios/libexec/check_aix_cpu.pl $ ARG1 $ $ ARG2 $ /command [check_cpu] =/usr /local/nagios/libexec/check_aix_cpu.pl -w $ ARG1 $ -c $ ARG2 $ /'文件名 – user3091583