shell编程中怎么对文本操作
比如一个有n行的文本文件1.删除某一行用什么命令。2.用已知的内容替换文件中的一行。3.还有重定向只有>>和>这两种是吗?看看看的头都大了。~~~补充一下第一个问题:删除...
比如一个有n行的文本文件
1.删除某一行用什么命令。
2.用已知的内容替换文件中的一行。
3.还有重定向只有>>和>这两种是吗?看看看的头都大了。~~~
补充一下第一个问题:
删除之后不能有空行,即删除前:1:asd 2:asdasd 3:asd
删除后不能是:1:asd 2: 3:asd
必须是1:asd 2:asd。不知道这么讲清不清楚
对了还有一个问题,grep命令用什么参数可以让他在只指定的行中进行匹配。比如我想让他在第3行中匹配该怎么弄,能用grep最好,实在不行用那个什么sed,awk的也行。谢谢大家 展开
1.删除某一行用什么命令。
2.用已知的内容替换文件中的一行。
3.还有重定向只有>>和>这两种是吗?看看看的头都大了。~~~
补充一下第一个问题:
删除之后不能有空行,即删除前:1:asd 2:asdasd 3:asd
删除后不能是:1:asd 2: 3:asd
必须是1:asd 2:asd。不知道这么讲清不清楚
对了还有一个问题,grep命令用什么参数可以让他在只指定的行中进行匹配。比如我想让他在第3行中匹配该怎么弄,能用grep最好,实在不行用那个什么sed,awk的也行。谢谢大家 展开
1个回答
展开全部
cat test.txt
asd
asdasd
asd
sed -i '/asdasd/d' test.txt 删除匹配asdasd 的行,其中asdasd 为匹配内容 test.txt 为文件名
sed -i '2d' test.txt 删除第2行
指定行匹配
第二行中 匹配 asdasd
sed -n '2p' test.txt |sed -n '/asdasd/p'
head -2 test.txt |tail -1|sed -n '/asdasd/p'
awk 'NR==2' test.txt|sed -n '/asdasd/p'
awk 'NR==2{if($0~asdasd)print}' test.txt
asd
asdasd
asd
sed -i '/asdasd/d' test.txt 删除匹配asdasd 的行,其中asdasd 为匹配内容 test.txt 为文件名
sed -i '2d' test.txt 删除第2行
指定行匹配
第二行中 匹配 asdasd
sed -n '2p' test.txt |sed -n '/asdasd/p'
head -2 test.txt |tail -1|sed -n '/asdasd/p'
awk 'NR==2' test.txt|sed -n '/asdasd/p'
awk 'NR==2{if($0~asdasd)print}' test.txt
更多追问追答
追问
sed -n '2p' test.txt |sed -n '/asdasd/p'head -2 test.txt |tail -1|sed -n '/asdasd/p'这几行是什么意思,能不能解释下。我知道d是删除,a是添加好像,那P是什么呢?
追答
首先每一行都是一种方法,
你的两行放一起了,
小写p 是打印的意思
sed -n '2p' test.txt |sed -n '/asdasd/p'
解释:
1、-n 是不打印原文件内容
2、 sed -n '2p' test.txt 打印第二行
3、| 管道符 (功能 前面的输出内容做为后面的输入内容)
4、sed -n '/asdasd/p' 匹配asdasd打印
head -2 test.txt |tail -1|sed -n '/asdasd/p'
1、head -2 test.txt 打印前两行
2、tail -1 前两行中 取倒数第一行 (等于取第二行)
3、同上, 匹配asdasd打印
拓展说明:sed 中还有一个大写的P参数 用于空间模式(多行匹配)
自己可以去了解一下 sed多行模式空间的N P D操作
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询