linux修改文件内容的脚本|如何在shell脚本中修改添加替换指定文件中的内容

linux修改文件内容的脚本|如何在shell脚本中修改添加替换指定文件中的内容的第1张示图

『壹』 使用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必需顶格写,前面不能有空格。

『贰』 linux中我想批量替换指定字符串之后的内容的脚本,仅限bash.

『叁』 如何在shell脚本中修改添加替换指定文件中的内容

1、启动Linux系统,用ssh工具连上Linux系统。

注意事项:

shell脚本在计算机科学中,是指“为使用者提供操作界面”的软件(命令解析器)。类似于DOS下的command.com和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序。

『肆』 linux 用脚本 修改.conf文件,即时生效问题

init.d下的都抄是开机时启动的后台进程袭执行脚本,脚本配置里会有执行程序的定义,这个执行的程序就会去读取相关配置文件。比如你说的/etc/init.d/dnsmasq脚本里定义的dnsmasq程序运行后就会去读取/etc/dnsmasq.conf文件.

『伍』 求Linux语言 新建脚本文件 查看脚本内容 修改文件权限 运行文件 建立硬连接 建立符号连接 复

新建脚本文件 vi 1.sh查看脚本内容 cat 1.sh修改文件权限 chmod +x 1.sh运行文件 ./1.sh建立硬连接 ln 1.sh 1.sh.hard建立符号连接 ln -s 1.sh 1.sh.soft复制文件 cp 1.sh 2.sh删除文件 rm 2.sh新建目录 mkdir dir1删除目录 rm -rf dir1

『陆』 linux 替换文件内容 脚本

假设文件名a.txt,就一行name=xxx的话,A=`awk -F"=" '{print $2}' a.txt`;sed -i "s/$A//" a.txt#下条命令同理sed -i "s/$(awk -F"=" '{print $2}' a.txt)//" a.txt或者A=`cut -d"=" -f 2 a.txt`;sed -i "s/$A//" a.txtsed -i "s/$(cut -d"=" -f 2 a.txt)//" a.txt解释:截取等号后内面的值并赋予变量容A,将变量A替换成字符串注意如果sed替换需要引入shell变量的话,需要将单引变成双引号进行弱转义。否则命令报错。

『柒』 linux如何批量修改文件里内容啊。

1.先将你上面的文本保存为文件 ts.txt2.保存如下脚本为ts.sh并修改可执行权限。#!/bin/bashcat ts.txt |gawk '/IOPATH/ {if (gsub(/\(|\)/,"")) {t1=$1;t2=$2;t3=$3;split($4,value1,":");v1=value1[1];v2=value1[2];v3=value1[3];split($5,value2,":");v11=value2[1];v22=value2[2];v33=value2[3];print "\t("t1" " t2" " t3 " ("v1*10":"v2*10":"v3*10") ("v11*10":"v22*10":"v33*10"))"};next} {print}' 3. # ./ts.sh >ts1.txt4. # more ts1.txt 输出如下,按照你的要求每个数*10(CELL (CELLTYPE "OR2X1") (INSTANCE U2604) (DELAY (ABSOLUTE(IOPATH A Y (6.5:6.5:6.5) (4.57:4.57:4.57))(IOPATH B Y (6.08:6.08:6.08) (6.82:6.82:6.82)) ) ))(CELL (CELLTYPE "OAI21XL") (INSTANCE U2603) (DELAY (ABSOLUTE(IOPATH A0 Y (1.11:1.11:1.11) (0.49:0.49:0.49))(IOPATH A1 Y (3.11:3.11:3.11) (-0.37:-0.37:-0.37))(IOPATH B0 Y (1.86:1.88:1.88) (0.62:0.62:0.62)) ) ))5. # diff ts.txt ts1.txt 比较结果输出如下6,7c6,7< (IOPATH A Y (0.650:0.650:0.650) (0.457:0.457:0.457))< (IOPATH B Y (0.608:0.608:0.608) (0.682:0.682:0.682))—> (IOPATH A Y (6.5:6.5:6.5) (4.57:4.57:4.57))> (IOPATH B Y (6.08:6.08:6.08) (6.82:6.82:6.82))16,18c16,18< (IOPATH A0 Y (0.111:0.111:0.111) (0.049:0.049:0.049))< (IOPATH A1 Y (0.311:0.311:0.311) (-0.037:-0.037:-0.037))< (IOPATH B0 Y (0.186:0.188:0.188) (0.062:0.062:0.062))—> (IOPATH A0 Y (1.11:1.11:1.11) (0.49:0.49:0.49))> (IOPATH A1 Y (3.11:3.11:3.11) (-0.37:-0.37:-0.37))> (IOPATH B0 Y (1.86:1.88:1.88) (0.62:0.62:0.62))从以上比较的结果可以看出每个符合要求的值都乘以了10.希望能帮你解决

『捌』 谁知道linux 文件批量复制脚本 把1个复制成不同名字的多个。批量修改文件内容脚本,替换指定的字符。

一个复复制多个#!制/bin/bash#a..z代表从字面a到z的26个名字 替换成你要的名字即可 名字之间留空格#比如 for i in 张三 李四 王五 for i in {a..z}docp -pv 你的文件名 $idone修改文件内容#!/bin/bashfor i in 文件1 文件2 文件3dosed -i 's/被替换的字符/替换成的字符/g' $idone你的问题能描述的清楚点么。。。到底是本目录下一个文件复制多个 还是 多个文件复制多个

『玖』 SHELL脚本对LINUX下指定文本文件的满足条件的行的特定位置字符串进行替换

YDAY=$(date+"%Y%m%d"-d"-1days")TDAY=$(date+"%Y%m%d")awk-vYDAY=$YDAY-vTDAY=$TDAY'NR==1{if(substr($0,20,8)==YDAY)$0=substr($0,1,19)TDAYsubstr($0,28)if(substr($0,34,8)==YDAY)$0=substr($0,1,33)TDAYsubstr($0,42)}/^TH/{if(substr($0,21,8)==YDAY)$0=substr($0,1,20)TDAYsubstr($0,29)}{print}'文件名

『拾』 linux系统使用shell脚本对文件的编辑问题,请赐教!

1. sed '6d' yourfile > /tmp/yourfile.tmp && mv -f /tmp/yourfile.tmp yourfile2. sed '3G' yourfile3. sed -n '8s/^..\(…\).*/\1/p' yourfile

未经允许不得转载:山九号 » linux修改文件内容的脚本|如何在shell脚本中修改添加替换指定文件中的内容

赞 (0)