比如一个有n行的文本文件
1.删除某一行用什么命令。
2.用已知的内容替换文件中的一行。
3.还有重定向只有>>和>这两种是吗?看看看的头都大了。~~~
补充一下第一个问题:
删除之后不能有空行,即删除前:1:asd 2:asdasd 3:asd
删除后不能是:1:asd 2: 3:asd
必须是1:asd 2:asd。不知道这么讲清不清楚
对了还有一个问题,grep命令用什么参数可以让他在只指定的行中进行匹配。比如我想让他在第3行中匹配该怎么弄,能用grep最好,实在不行用那个什么sed,awk的也行。谢谢大家
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操作
我试了下,文件内容没有发生变化。其实我在做课程设计,shell通讯录,记录都放在一个文件中。现在不会弄修改操作。比如接收3个变量,name,phonenumber,QQ,然后把这3个变量写入记录文件。(到这我都会)然后需要修改了,再接收3个变量写入,覆盖第一次写入的位置。主要是这个不会,能劳烦这位网友讲下吗?添加删除查询都弄好了,就差这个修改操作。
例子:第n行数据:Allen 123 456,接收3个变量覆盖第n行原有的数据。
cat test.txt
Andy 123 456
Ben 124 457
Allen 123 456
Zak 234 393
cat alter-by-line.sh
#!/bin/sh
sed -i -e "3a$1 $2 $3" -e "3d" test.txt
第三行后添加 接收的数据 $1 ~ $3 分别表示 脚本后面的 第一个参数 ~第三个参数
删除原有第三行
sh alter-by-line.sh Aimer 124 454 #执行脚本
cat test.txt
Andy 123 456
Ben 124 457
Aimer 124 454
Zak 234 393
。。。额。。。我一开始想的修改就是用先删除后添加的办法,觉得太土了。不过非常感谢你