A文件:格式内容为:
。。。。
*DDD= 111 2222 3333 4444
*222 289 6768 7878 7878
*。。。。。
*。。。。。
。。。。。其中DDD是关键字,*表示续行;
B文件是:
TIME1 T2 T3 T4
xxx xxxx xxx xxx
xxx xxx xxx xxx
。。 。。 。。 。。
要实现的目标就是将B文件的T2列下面的数据替换掉A文件中关键字'DDD'后面的以及续行上的数据,即最后结果为:
。。。。(不变)
*DDD= xxxx xxx xx xxxx xxxx(每行8个数据)
* xxxx xxxxx xxx xxxx xxxxx(8个数据)
* xxxx 。。。。。。。。。
* xx 。。。。。。。。。
。。。。。。。(不变的部分)
求大神解答
ææè¿æå¼å§å¦shellç¼ç¨ï¼ä¹çäºsedå½ä»¤åawkå½ä»¤ï¼å¯æ¯å¯¹äºè¿ä¸ªé®é¢è¿æ¯æ²¡æ头绪ï¼è½ä¸è½è¯·æä¸ä¸åºè¯¥ç¨ä»ä¹å½ä»¤æ¥å®ç°å¢ï¼
追çè¿ä¸ªè¦ç»åawkåseç ï¼ ä¸è¿éè¦çæ¯ç¼ç¨çæè·¯åï¼ä¹å°±æ¯ä¸ºä»ä¹ç»éªå¨ä¼ä¸ä¸æ¯å¾å¼é±çéçäºã
å¦æ楼主å¯ä»¥çè¯ï¼ å¯ä»¥çä¸ç½ååï¼
既然是替换,那么数据行数肯定是相等的吧?
追问首先谢谢大侠的帮助了。然后就是数据行数和个数都不一定相等。假设A文件关键字DDD后面有30行数据(以*号续行的,31行以后为其他不需要替换的数据)。然后B文件T2列有400个数据,现在就用这400个数据去替换A的30行数据,每行8个400个就是50行了。或者B文件只有200个数据,那每行8个就是25行,现在就要用这25行去替换A文件的那30行数据了。不知道我说清楚没。
追答如果行数不等,就不能像上面那样直接按行替换了。需要先删除A文件中的原数据,然后再插入新数据。
而要删除原数据,就需要知道原数据的起始行和结束行。起始行可以通过匹配“DDD=”,结束行最好也有个关键字;如果没有,我这里只能先按照你提供的30行长度和起始行位置来计算。
#!/bin/shLinux下的shell编程 如何替换文件中的内容
方法1:sed -i 's\/被替换的内容\/要替换成的内容\/' file 方法2:sed 's\/被替换的内容\/要替换成的内容\/g' file > file.out;mv file.out file。
shell脚本替换A、B两个文件里面的内容
可以使用sed进行操作,先定义一个参数读取A文件中的第一行 LineA=`sed...` 或者是使用cat把内容读取出来,再使用sed的替换方法,将B文件中的第一行替换为$LineA即可。希望有帮助
如何在shell脚本中修改添加替换指定文件中的内容
1、启动Linux系统,用ssh工具连上Linux系统。2、bash自带了一些调试选项。3、在脚本启动时添加调试选项。来调试debug.sh。4、在脚本内添加调试选项,使用set 命令。5、现在要看debug.sh脚本执行的调试信息,就不需要使用bash -x .\/debug.sh执行了。6、在脚本开头添加-xv选项。7、同样现在执行.\/debu...
shell sed 或tr替换的时候有部分内容替换不完全:
1、去除重复的字符 删除空白行就是删除换行符\/n。注意:这些空白行上只有回车符,没有空格符。cat test.txt I love linux!Hello World!Shell is worthy to been studied.这里用换行符的转义字符\\n.注意:此处用-s删除了多余的换行符,如果用-d,则会删除所有的换行符.cat test.txt | tr -s [...
linux shell编程中文件内容修改方法
!\/usr\/bin\/ksh 这里的两个变量一个是学号,一个是数据文件 serial="S1002"dbfile="cj.db"显示行号和该行的信息 showMessage(){ sed -n "\/${serial}\/{=;p;}" ${dbfile} } 设置数学成绩 setMath(){ sed "\/${serial}\/s\/:[^:]\\{1,\\}\/:$1\/3" ${dbfile} } 设置语文成绩 set...
shell中文件字符串替换
答案:在Shell中,可以使用`sed`命令进行文件字符串替换。具体语法为:`sed -i 's\/原字符串\/新字符串\/g' 文件名`。详细解释:1. sed命令简介 `sed`是一个流编辑器,用于对文本文件进行非交互式处理。它可以对文件内容进行搜索、替换、删除、插入等操作。2. 字符串替换语法 `sed`命令中的替换...
在LINUX中如何把2个文件中的内容合到另一个文件中去?
1、首先,连接相应linux主机,进入到linux命令行状态下,等待输入shell指令。2、其次,在命令行中输入:cat test.txt test1.txt > test2.txt。3、键盘按“回车键”运行shell指令,此时会看到2个文件成功合并到test2.txt了。
如何通过linux shell 将两个文件中的内容,进行多条件匹配,并且做并集合 ...
1 AAA FN123 1000 10.0362 2 BBB FN456 2000 15.8355 cat 2 1 AAA FN123 2000 20.0362 2 BBB FN456 3000 45.8355 3 CCC FN1a3 2000 20.0362 cat 1 2 |sort -n -k4 -r|awk '!a[$2]++'|awk 'BEGIN{i=1}{if(...
请问怎么在shell脚本中,替换文件多行里面的指定字符串
sed -i '\/aaa\/{:a;n;s\/123\/xyz\/g;\/eee\/!ba}' yourfile先匹配aaa,匹配到后执行大括号里的语句。n 读取下一行 s\/123\/xyz\/g 将123替换为xyz,全局替换,同一行中出现几次替换几次 :a 设定跳转标签a \/eee\/!ba 若当前行匹配不上eee,则跳转到标签a处继续执行,构成一个循环。若匹配...
linux 文件内容替换问题
文件内容替换涉及到的命令如下:1、打开文件后,进入一般模式(即没法修改文件的模式)2、输入 :1,$s\/word1\/word2\/g 指从第一行到最后一行,将word1换为word2 3、可以在g后面加上字母c,这样替换前都需要用户确认。