分页: 1 / 1
请教:tail 提取文本文件的内容,用sed替换时出错?
发表于 : 2016-06-12 11:45
由 TeliuTe
用for读出来的替换另一个html文件里的@@没问题,(参看附件样例)
用tail提取的就提示 sed: -e 表达式 #1, 字符 56: 未终止的“s”命令,用leafpad查看提取的内容,结尾多了一空行
for 的可以正常通过
代码: 全选
#!/bin/bash
#8.txt里有5行数据,第1行不要
i=1
for yyyy in `cat 8.txt`;do
if ((i !=1));then
b=$b"$yyyy";
fi
((i=i+1))
done
find -name 'lesson.html' -exec sed -i 's;@@;'$b';' {} \;
tail 出错的
代码: 全选
#!/bin/bash
line=`sed -n '$=' 8.txt`
((line=line-1))
b=`cat 8.txt | tail -n $line`
find -name 'lesson.html' -exec sed -i 's;@@;'$b';' {} \;
Re: 请教:tail 提取文本文件的内容,用sed替换时出错?
发表于 : 2016-06-12 12:45
由 cao627
代码: 全选
czj@debian:~/Downloads$ d="1.打开主文件夹,点右键新建文件夹。 2.打开8-3,最上面找书签菜单。 3.左侧栏找绿色表格,打开。 4.保存是绿色的,存到8-3里。"
czj@debian:~/Downloads$ echo $d
1.打开主文件夹,点右键新建文件夹。 2.打开8-3,最上面找书签菜单。 3.左侧栏找绿色表格,打开。 4.保存是绿色的,存到8-3里。
czj@debian:~/Downloads$ echo "$d"
1.打开主文件夹,点右键新建文件夹。 2.打开8-3,最上面找书签菜单。 3.左侧栏找绿色表格,打开。 4.保存是绿色的,存到8-3里。
czj@debian:~/Downloads$ c="1.打开主文件夹,点右键新建文件夹。
> 2.打开8-3,最上面找书签菜单。
> 3.左侧栏找绿色表格,打开。
> 4.保存是绿色的,存到8-3里。
> "
czj@debian:~/Downloads$ echo $c
1.打开主文件夹,点右键新建文件夹。 2.打开8-3,最上面找书签菜单。 3.左侧栏找绿色表格,打开。 4.保存是绿色的,存到8-3里。
czj@debian:~/Downloads$ echo "$c"
1.打开主文件夹,点右键新建文件夹。
2.打开8-3,最上面找书签菜单。
3.左侧栏找绿色表格,打开。
4.保存是绿色的,存到8-3里。
如上,d和c变量用echo $d 和 echo $c命令显示是一样的。但echo "$d" 和 echo "$c" 显示不一样。
即你的 b=`cat 8.txt | tail -n 4` 命令给b赋值的结果相当与如上变量c的值,其中包含不可见换行符号。
sed 's;@@;'$b';' lesson.html 命令执行时
变量$b中的不可见换行符,你不可见,但sed命令可见
Re: 请教:tail 提取文本文件的内容,用sed替换时出错?
发表于 : 2016-06-13 17:56
由 TeliuTe
多谢解答,
貌似用tail还不行,for有点太啰嗦,我再试试看
Re: 请教:tail 提取文本文件的内容,用sed替换时出错?
发表于 : 2016-06-13 22:48
由 astolia
如果能保证@@独占一行的话
代码: 全选
sed '1d' 8.txt > /tmp/tmpfile
sed -i -e '/@@/{r /tmp/tmpfile' -e 'd}' lesson.html
或者干脆用perl,最简单
代码: 全选
perl -i -pe 's/@@/`sed '1d' 8.txt`/ge' lesson.html
Re: 请教:tail 提取文本文件的内容,用sed替换时出错?
发表于 : 2016-06-14 13:02
由 TeliuTe
@@ 要替换成网页标题,段落标题和正文内容,前面两个不能单独一行
--
暂存一下,
代码: 全选
rpl -Rde '\r\n' '<br />\r\n' ./*.txt
所有的文本文件的换行加上html换行符
sed -i -e '/@bb/{r 8__.txt' -e 'd}' lesson.html
把整个文本文件插入到模板中,@bb独占一行
b=`echo $a |cut -d ' ' -f 2`
按空格分割,取空格后面的字符串,比如“第一课 学会Ubuntu”,取出后面的“学会Ubuntu”加到标题里,在添加<br/>之前,先取出来
前面的一对``表示括起来的是一句命令,cut 分割,-d 按指定字符,单引号里有个空格,f 2 指定留下空格分割的第二段
Re: 请教:tail 提取文本文件的内容,用sed替换时出错?
发表于 : 2016-06-14 17:00
由 astolia
TeliuTe 写了:@@ 要替换成网页标题,段落标题和正文内容,前面两个不能单独一行
我指的是@@这两个字符需要独占一行,sed脚本里就可以直接用d命令删除整行了。而不是替换后的内容