❶ 使用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>tmpcat<<EOF>>tmpforhnamein`echo"$hostnames"|tr','''`doinsert$hnameinsert$paragraphdoneEOFsed-n'/^</abcdef>/,$p'test.xml>>tmpmvtmptest.xml
注意:
1) for a in b 结构中,b集合里的内容必需要空格分隔。所以我这里做了转换,用tr命令将逗号分隔改为了空格分隔。
2)第二个EOF必需顶格写,前面不能有空格。
❷ shell脚本进行文件修改
这个文件的内容,是磁盘的分区布局,不能直接修改这个文件,而应该去修改磁盘的分区结构,分区改了,这个文件的内容就变了
❸ shell 脚本编写修改文件
修改脚本中的对应变量可以实现替换内容的修改,具体实现如下:
#!/usr/bin/env bashPASS_MAX_DAYS=90PASS_MIN_DAYS=2PASS_MIN_LEN=8PASS_WARN_AGE=7login_path="/etc/login.defs"pwquality_path="/etc/security/pwquality.conf"if [ -f $login_path ]; thensed -i -E "s/(^PASS_MAX_DAYS.)[0-9]+/1$PASS_MAX_DAYS/g" $login_pathsed -i -E "s/(^PASS_MIN_DAYS.)[0-9]+/1$PASS_MIN_DAYS/g" $login_pathsed -i -E "s/(^PASS_MIN_LEN.)[0-9]+/1$PASS_MIN_LEN/g" $login_pathsed -i -E "s/(^PASS_WARN_AGE.)[0-9]+/1$PASS_WARN_AGE/g" $login_pathecho "完成$login_path文件的替换"elseecho "$login_path 文件不存在,请检查配置"fiif [ -f $pwquality_path ]; thenecho password requisite pam_cracklib.so minlen=8 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1 >>$pwquality_pathecho account required /lib/securtiy/pam tally.so deny=5 no_magic_root reset >>$pwquality_pathecho "对$pwquality_path完成追加"elseecho "$pwquality_path 文件不存在,请检查配置"fi
❹ shell脚本替换文本内容
1、按=分割取第二列cat $file1|grep mqserver|awk -F= '{print $2}'`2、直接替换文件内容sed -i "s/127.0.0.1/192.168.1.1/" file13、实例:#!/bin/shfile1=ip1.txtfile2=ip2.txtIP1=`cat $file1|grep mqserver|awk -F= '{print $2}'`IP2=`cat $file2|grep ip|awk -F= '{print $2}'`echo change $IP1 to $IP2.sed -i "s/$IP1/$IP2/" $file1more $file1
❺ shell脚本修改配置文件中内容,实现自动每次加1。求指导,不胜感谢!
#!/bin/bashNUM=$(grep-oP'(?<=hello-)(d+)'$1)sed-i"s/$NUM/$((NUM+1))/"$1
❻ shell脚本进行文件内容替换,求高手指导!感谢!
#!/bin/bash sed -i '爱好=篮球,足球/c 爱好=排球,围棋,看电影' abc.ini这样就行了 abc.ini要加绝对路径。
❼ 如何在shell中添加修改文件内容的命令
sed 。。。直接加到脚本里就行了,想改啥改啥啊
❽ 如何通过shell脚本修改文件内容
sed-i's/10.252.121.174:8103/10.252.121.174:8003/g'文件名
❾ Linux 脚本编写 如何编写一个脚本,修改已有文件中的内容
实现的复方法如下:
1、第一步,打制开命令控制台以找到要编辑的文件,执行命令ls来查看下面的一些文件,在下面有一个index.php文件,如下图所示。
❿ Linux下的shell编程 如何替换文件中的内容
可以这样做:
方法1:sed -i 's/被替换的内容/要替换成的内容/' file
方法2:sed 's/被替换的内容/要替换成的内容/g' file > file.out;mv file.out file。
(10)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、重定向标准输出和标准错误:&> 将标准输出、标准错误信息全部保存到指定文件,而不是直接显示在屏幕上。