linux shell编程sed用法
aaabbbbcccccddafsddasfasfasadsfasdfaasdfdsdfasdfasdfasdfasdasdfasdfasdfadfasdfas以上为5段...
aaa
bbbb
cccc
cddafsd
dasfasfas
adsfasdfa
asdfdsdfasdf
asdfasdfasd
asdfasdfasdf
adfasdfas
以上为5段文字,现在想用sed来输出指定段落(如第二段--第四段),求高手赐教! 展开
bbbb
cccc
cddafsd
dasfasfas
adsfasdfa
asdfdsdfasdf
asdfasdfasd
asdfasdfasdf
adfasdfas
以上为5段文字,现在想用sed来输出指定段落(如第二段--第四段),求高手赐教! 展开
4个回答
展开全部
略难。一个比较简明的方法的大概思路是:
声明一个变量计空行的数目。数到1之后,开始输出(或者换入交换空间)。数到4的时候退出程序(或者把交换空间里的内容换出来输出再退出)。
这样如果想改成输出其它段落的话,只需改数字即可。
声明一个变量计空行的数目。数到1之后,开始输出(或者换入交换空间)。数到4的时候退出程序(或者把交换空间里的内容换出来输出再退出)。
这样如果想改成输出其它段落的话,只需改数字即可。
追问
能不能帮忙写个语句呢?谢谢
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#!/bin/bash
#By Spinestar
dl(){
n=0
n1=1
sed '/./,/^$/!d' $path1 | while read line
do
n=$[ $n + 1 ]
if [[ $line == "" ]];then
n1=$[ $n1 + 1 ]
echo "这是第$n1段落"
else
echo "这是第$n行:"$line
fi
done
}
read -p "请输入文本路径(绝对路径)" path1
read -p "请输入首段落" dl1
read -p "请输入尾段落" dl2
path2="`pwd $path1`/b.tmp"
dl $path1 > $path2
sed -i '1i\这是第1段落' $path2
echo "$dl1 - $dl2 段落内容如下:"
dl2=$[ $dl2 + 1 ]
sed -n "/"$dl1段落"/,/"$dl2段落"/{p}" $path2 | sed -n '$d;p'
rm $path2
只需要知道段落号就可以。
修改了下,应该没有什么问题了。
不好意思,写得比较烂。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
sed -n '2,4p' file
更多追问追答
追问
这个只是输出行数,不是我想要的,我要的是段落。
如第二段到第四段结果为:
cccc
cddafsd
dasfasfas
adsfasdfa
asdfdsdfasdf
asdfasdfasd
asdfasdfasdf
追答
sed -n '/cccc/,/asdfasdfasdf/p' file
看错了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
sed比较难
awk则很好解决
awk则很好解决
更多追问追答
追问
awk可以实现也行的,能不能麻烦写个语句呢?谢谢
追答
正解:
awk -vNR="" '1<NR && NR<5 {print}' myfile.txt
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询