文件字符串变量插入linux,Linux Shell脚本实现在文件指定的行插入字符串
涉及知識(shí)點(diǎn):grep字符串查找,awk截取列,until條件操作,sed字符串插入,變量與字符串連接等。
人工操作(首先vim打開文件找到字符串所在的位置,插入操作):
vim?/etc/glance/glance-api-paste.ini
#?Line69
auth_host?=?controller
admin_user?=?glance
admin_tenant_name?=?service
admin_password?=?94fbb57c427f539b0fc5
Shell腳本實(shí)現(xiàn)(grep查找字符串位置,sed執(zhí)行插入操作):
num=$(grep?-n?'\[filter:authtoken\]'??/usr/share/glance/glance-api-paste.ini?|?awk?-F?':'?'{print?$1}')
nump=1p
until?[[?$(sed?-n?"$nump"?/usr/share/glance/glance-api-paste.ini)?==?""?]];?do
num=$(expr?$num?+?1)
nump=$num"p"
done
numa=$num"a"
sed?-i?'$numa?auth_host?=?controller
admin_user?=?glance
admin_tenant_name?=?service
admin_password?=?94fbb57c427f539b0fc5'?/usr/share/glance/glance-api-paste.ini
注:
已無害化處理。
sed中的sub命令如a插入,p打印等不能直接跟變量相連接,使用雙引號(hào)進(jìn)行連接,如“numa=$num"a"”。
blog.51cto.com 標(biāo)簽: shell,sed,grep,字符串操作,變量與字符串連接
附加:
14:51 2014/10/27
修正一個(gè)bug,此bug導(dǎo)致sed處理多行時(shí)沒有正確換行,修復(fù)方法為在換行時(shí)添加換行符“\”修復(fù)腳本如下:
sed?-i?'$numa?auth_host?=?controller\n\
admin_user?=?glance\n\
admin_tenant_name?=?service\n\
admin_password?=?94fbb57c427f539b0fc5'?/usr/share/glance/glance-api-paste.ini
總結(jié)
以上是生活随笔為你收集整理的文件字符串变量插入linux,Linux Shell脚本实现在文件指定的行插入字符串的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SLF4JLoggerContext c
- 下一篇: centos普通用户修改文件权限_Lin