发布网友 发布时间:2022-04-23 03:51
共4个回答
热心网友 时间:2022-04-14 17:37
略难。一个比较简明的方法的大概思路是:
声明一个变量计空行的数目。数到1之后,开始输出(或者换入交换空间)。数到4的时候退出程序(或者把交换空间里的内容换出来输出再退出)。
这样如果想改成输出其它段落的话,只需改数字即可。追问能不能帮忙写个语句呢?谢谢
热心网友 时间:2022-04-14 18:55
#!/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
只需要知道段落号就可以。
修改了下,应该没有什么问题了。
不好意思,写得比较烂。
热心网友 时间:2022-04-14 20:30
sed -n '2,4p' file
热心网友 时间:2022-04-14 22:21
sed比较难
awk则很好解决