linux shell编程sed用法

发布网友 发布时间: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则很好解决

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com