分页: 1 / 2

请问如何终端替换文本文件中指定行数的字符并保存

发表于 : 2013-01-24 14:13
cem
各位,请问一个文本文件,其中有几千行。我想在我指定的某几行数内替换指定的字符并保存。请问如何实现呢?因为经常重复,老是手动的,真的快晕了。谢谢!

Re: 请问如何终端替换文本文件中指定行数的字符并保存

发表于 : 2013-01-24 14:33
YeLee
sed就满足你的需求了。 :em01 :em01 :em01

Re: 请问如何终端替换文本文件中指定行数的字符并保存

发表于 : 2013-01-24 15:05
cem
能否给个示例?另外不是文本文件也行吗?

Re: 请问如何终端替换文本文件中指定行数的字符并保存

发表于 : 2013-01-24 19:06
cem
忘记说我替换的内容是一对一,并非替换成全部相同的内容

Re: 请问如何终端替换文本文件中指定行数的字符并保存

发表于 : 2013-01-24 20:08
ceclinux

代码: 全选

 nl /etc/passwd | sed '2,5c No 2-5 number'>new.txt
将 2到5行的替换成No 2-5 number并保存到new.txt

Re: 请问如何终端替换文本文件中指定行数的字符并保存

发表于 : 2013-01-24 21:32
cem
如果是2,5行替换不同的内容呢?

Re: 请问如何终端替换文本文件中指定行数的字符并保存

发表于 : 2013-01-25 13:40
ceclinux
cem 写了:如果是2,5行替换不同的内容呢?
什么意思

Re: 请问如何终端替换文本文件中指定行数的字符并保存

发表于 : 2013-01-26 10:12
cem
ceclinux 写了:
cem 写了:如果是2,5行替换不同的内容呢?
什么意思
我想修改的是smail文件,nl指定行数要不要多加参数呢?如果2行和5行有我想替换的某个字符串,但是不是整行都需要替换,怎么办呢?另外我不想另存文件,怎办呢?谢谢

Re: 请问如何终端替换文本文件中指定行数的字符并保存

发表于 : 2013-01-26 10:32
YeLee
这sed不是有个i参数么?再一个s操作就可以了啊。 :em20 :em20 :em20

Re: 请问如何终端替换文本文件中指定行数的字符并保存

发表于 : 2013-01-26 12:23
cem
YeLee 写了:这sed不是有个i参数么?再一个s操作就可以了啊。 :em20 :em20 :em20
我想查找替换的字符在文件中有很多相同,但我只想替换指定行数的中匹配的那些,要怎么才更省力呢?

Re: 请问如何终端替换文本文件中指定行数的字符并保存

发表于 : 2013-01-26 12:26
YeLee
好吧,我其实开始不懂你的意思了,你能弄个示范文本来说明一下么? :em01 :em01 :em01

Re: 请问如何终端替换文本文件中指定行数的字符并保存

发表于 : 2013-01-26 12:45
cem
YeLee 写了:好吧,我其实开始不懂你的意思了,你能弄个示范文本来说明一下么? :em01 :em01 :em01
不好意思,我再表述清楚下。一个smaiL文件,有一万多行,其中第173行,第891行,9765行均不相同,但是这些行其中都有我想查找替换的字符sqbcc(在这个文件中还有其它行也有sqbcc,但那些行我不想替换),我就是想替换这些字符为rt。我在上班用手机上网,没有文件,复制不了。这样清楚吗?

Re: 请问如何终端替换文本文件中指定行数的字符并保存

发表于 : 2013-01-26 12:55
YeLee
[bash]
$head -n10 /etc/passwd |tee test
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/bin/false
daemon:x:2:2:daemon:/sbin:/bin/false
adm:x:3:4:adm:/var/adm:/bin/false
lp:x:4:7:lp:/var/spool/lpd:/bin/false
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
news:x:9:13:news:/var/spool/news:/bin/false
uucp:x:10:14:uucp:/var/spool/uucp:/bin/false

$sed -i '1,5s/false/bash/g' test

$cat test
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/bin/bash
daemon:x:2:2:daemon:/sbin:/bin/bash
adm:x:3:4:adm:/var/adm:/bin/bash
lp:x:4:7:lp:/var/spool/lpd:/bin/bash
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
news:x:9:13:news:/var/spool/news:/bin/false
uucp:x:10:14:uucp:/var/spool/uucp:/bin/false
[/bash]
:em01 :em01 :em01

Re: 请问如何终端替换文本文件中指定行数的字符并保存

发表于 : 2013-01-26 13:00
枫叶饭团
sed '173s/sqbcc/rt/g'就是换到第173行

Re: 请问如何终端替换文本文件中指定行数的字符并保存

发表于 : 2013-01-26 17:37
cem
非常感谢各位仁兄!head或者nl行数参数为什么适用于smail文件呢? :em01