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

sh/bash/dash/ksh/zsh等Shell脚本
cem
帖子: 170
注册时间: 2011-03-10 19:08

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

#1

帖子 cem » 2013-01-24 14:13

各位,请问一个文本文件,其中有几千行。我想在我指定的某几行数内替换指定的字符并保存。请问如何实现呢?因为经常重复,老是手动的,真的快晕了。谢谢!
头像
YeLee
论坛版主
帖子: 26406
注册时间: 2008-08-13 8:48
系统: Fundu i64
来自: 东海硇州,一双管钥。
联系:

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

#2

帖子 YeLee » 2013-01-24 14:33

sed就满足你的需求了。 :em01 :em01 :em01
◎当我站在道德的高度上俯视别人的时候,发现自己是多么渺小。
♥执着但不偏激,反对而不排斥,坚决捍卫矛盾体的存在方式。
★★★天气预报★★★
fcitx-yatable一个可以使用的码表输入法
[教程]几个实例攻克软件编译难关
Gentoo Development Guide
字体相关
cem
帖子: 170
注册时间: 2011-03-10 19:08

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

#3

帖子 cem » 2013-01-24 15:05

能否给个示例?另外不是文本文件也行吗?
cem
帖子: 170
注册时间: 2011-03-10 19:08

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

#4

帖子 cem » 2013-01-24 19:06

忘记说我替换的内容是一对一,并非替换成全部相同的内容
头像
ceclinux
帖子: 308
注册时间: 2013-01-17 2:42
系统: Ubuntu 12.04LTS

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

#5

帖子 ceclinux » 2013-01-24 20:08

代码: 全选

 nl /etc/passwd | sed '2,5c No 2-5 number'>new.txt
将 2到5行的替换成No 2-5 number并保存到new.txt
Ubuntu 12.04 LTS
laptop:Acer 4750G CPU:I5-2410
内存:2+2G 硬盘:500+750
http://www.ceclinux.org
cem
帖子: 170
注册时间: 2011-03-10 19:08

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

#6

帖子 cem » 2013-01-24 21:32

如果是2,5行替换不同的内容呢?
头像
ceclinux
帖子: 308
注册时间: 2013-01-17 2:42
系统: Ubuntu 12.04LTS

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

#7

帖子 ceclinux » 2013-01-25 13:40

cem 写了:如果是2,5行替换不同的内容呢?
什么意思
Ubuntu 12.04 LTS
laptop:Acer 4750G CPU:I5-2410
内存:2+2G 硬盘:500+750
http://www.ceclinux.org
cem
帖子: 170
注册时间: 2011-03-10 19:08

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

#8

帖子 cem » 2013-01-26 10:12

ceclinux 写了:
cem 写了:如果是2,5行替换不同的内容呢?
什么意思
我想修改的是smail文件,nl指定行数要不要多加参数呢?如果2行和5行有我想替换的某个字符串,但是不是整行都需要替换,怎么办呢?另外我不想另存文件,怎办呢?谢谢
头像
YeLee
论坛版主
帖子: 26406
注册时间: 2008-08-13 8:48
系统: Fundu i64
来自: 东海硇州,一双管钥。
联系:

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

#9

帖子 YeLee » 2013-01-26 10:32

这sed不是有个i参数么?再一个s操作就可以了啊。 :em20 :em20 :em20
◎当我站在道德的高度上俯视别人的时候,发现自己是多么渺小。
♥执着但不偏激,反对而不排斥,坚决捍卫矛盾体的存在方式。
★★★天气预报★★★
fcitx-yatable一个可以使用的码表输入法
[教程]几个实例攻克软件编译难关
Gentoo Development Guide
字体相关
cem
帖子: 170
注册时间: 2011-03-10 19:08

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

#10

帖子 cem » 2013-01-26 12:23

YeLee 写了:这sed不是有个i参数么?再一个s操作就可以了啊。 :em20 :em20 :em20
我想查找替换的字符在文件中有很多相同,但我只想替换指定行数的中匹配的那些,要怎么才更省力呢?
头像
YeLee
论坛版主
帖子: 26406
注册时间: 2008-08-13 8:48
系统: Fundu i64
来自: 东海硇州,一双管钥。
联系:

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

#11

帖子 YeLee » 2013-01-26 12:26

好吧,我其实开始不懂你的意思了,你能弄个示范文本来说明一下么? :em01 :em01 :em01
◎当我站在道德的高度上俯视别人的时候,发现自己是多么渺小。
♥执着但不偏激,反对而不排斥,坚决捍卫矛盾体的存在方式。
★★★天气预报★★★
fcitx-yatable一个可以使用的码表输入法
[教程]几个实例攻克软件编译难关
Gentoo Development Guide
字体相关
cem
帖子: 170
注册时间: 2011-03-10 19:08

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

#12

帖子 cem » 2013-01-26 12:45

YeLee 写了:好吧,我其实开始不懂你的意思了,你能弄个示范文本来说明一下么? :em01 :em01 :em01
不好意思,我再表述清楚下。一个smaiL文件,有一万多行,其中第173行,第891行,9765行均不相同,但是这些行其中都有我想查找替换的字符sqbcc(在这个文件中还有其它行也有sqbcc,但那些行我不想替换),我就是想替换这些字符为rt。我在上班用手机上网,没有文件,复制不了。这样清楚吗?
头像
YeLee
论坛版主
帖子: 26406
注册时间: 2008-08-13 8:48
系统: Fundu i64
来自: 东海硇州,一双管钥。
联系:

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

#13

帖子 YeLee » 2013-01-26 12:55

[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
◎当我站在道德的高度上俯视别人的时候,发现自己是多么渺小。
♥执着但不偏激,反对而不排斥,坚决捍卫矛盾体的存在方式。
★★★天气预报★★★
fcitx-yatable一个可以使用的码表输入法
[教程]几个实例攻克软件编译难关
Gentoo Development Guide
字体相关
头像
枫叶饭团
帖子: 14683
注册时间: 2010-06-16 1:05
系统: Mac OS X
来自: Tencent
联系:

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

#14

帖子 枫叶饭团 » 2013-01-26 13:00

sed '173s/sqbcc/rt/g'就是换到第173行
cem
帖子: 170
注册时间: 2011-03-10 19:08

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

#15

帖子 cem » 2013-01-26 17:37

非常感谢各位仁兄!head或者nl行数参数为什么适用于smail文件呢? :em01
回复