假设文件A中的I包含以下内容
1 <div class="a"></div>
2 <div class="b"></div>
3 <div class="c"></div>
4 <div....
5 ...
6 ...
7 ...
8 ...
9 <div class="i"></div>我包含了实际上不存在的行号。
我的脚本中有两个名为start_line和end_line的变量,这两个变量包含我希望开始替换的行和希望结束替换的行
然后我有一个文件B,它也是一个名为export的变量,它包含一些文本,也是HTML标签(EDIT:认为这是无关紧要的-但看起来并非如此)
当我知道这些数字是变量,并且想要将它们替换为文件的内容时,如何将文件A中的所有内容从第4行替换到第7行?文件的内容也是一个变量(我猜可以是文件位置,也可以是相同的cat变量)。
我一直在胡乱摆弄sed和range的东西-n,但是...还有一些awk --但这里是shell和bash中的全部n00b
到目前为止,我已经尝试过了(变量名不一样,但我希望应该有意义
sed "-n${start_line},${end_line} s/${stump_text}" "$export_file"编辑:糟糕的是,我没有通知实际被替换的文本是HTML
发布于 2016-10-27 19:11:02
试一试
sed -e "${start_line} r ${fileB}" -e "${start_line},${end_line} d" "$fileA"由两个表达式组成:
-e "${start_line} r ${fileB}"用于读取由${fileB}指定的文件内容,并将其添加到由${start_line}-e "${start_line},${end_line} d指定的行地址之后以删除这些地址范围中的行发布于 2016-10-27 19:14:03
在awk中:
$ cat foo.awk
NR==start { # at start, output fileB.txt
while (getline < file)
print }
NR>=start && NR <= end { next } # between start and end do nothing
1 # print运行它:
$ fileb=fileb.txt; start=4; end=7 # your values into variables
$ awk -v file=$fileb -v start=$start -v end=$end -f foo.awk fileA.txt发布于 2016-10-27 18:46:01
如果我正确理解了您的意思,并且$export_file包含文件的名称,并且$stump_text文本将$start_line中的内容替换为$end_line,则应该是:
sed -i '${start_line},${end_line}s/.*/${stump_text}/' "$export_file"https://stackoverflow.com/questions/40282310
复制相似问题