sed在文件中某一行最后添加一个数字

回复 收藏
sed 's/\(^a.*\)/\1 12/' test

#cat  test
askdj
aslkd aslkdjf3e
skdjfsdfj
sdkfjk
fsdkfjksdjfkjsdf
12sdfesdf
aslkdjfkasdjf asdlfkjaskdfj

#sed 's/\(^a.*\)/\1 12/' test

askdj 12
aslkd aslkdjf3e  12
skdjfsdfj
sdkfjk
fsdkfjksdjfkjsdf
12sdfesdf
aslkdjfkasdjf asdlfkjaskdfj  12
2010-08-04 19:20 举报
已邀请:
1

sincethen

赞同来自: u92368407

我也添加 点东西。假如给 以空白字符(比如空格 什么的)开头的行最后添加一个数字 :

sed 's#\(^\s[a].*\)#\1 12#' test
sed 's#\(^\s[a].*\)#\& 12#' test
0

大漠之烟

赞同来自:

sed -n 's/^a.*/& 12/p' test.txt
0

zxc123

赞同来自:

sed -n 's/ \(^a.*\)/ \1 123\p' test.txt

输出结果:
adm:x:3:4:adm:/var/adm:/sbin/nologin 12
awei123:x:500:513::/home/awei123:/bin/bash 12
0

蓝色风暴

赞同来自:

我觉得阿铭老师这里有点搞复杂了,就其实就像你书里面讲的一样,可以用简单的方法实现,下面我分别在符合条件的行的前面和后面添加指定字符串,写两条命令1.在/etc/passwd文件中在含有root的行的前面添加abc字符串,并在后面跟一个空格
  1. sed '/root/s/^/abc /' /etc/passwd

2.在/etc/passwd文件中在以第一个mail开头的行到以一个ftp开头的行的后面添加abc,并在abc前面加一个空格
  1. sed '/^mail\>/,/^ftp\>/s/$/ abc/' /etc/passwd



0

蓝色风暴

赞同来自:

我主要是你这里这个“\1”有点不太明白什么意思
0

蓝色风暴

赞同来自:

现在回过头来又看一次,现在知道“\1”什么意思了,意思引用前面第一个左括号至第一个历括号的内容
0

蔡炳森

赞同来自:

sed -r 's/^(root)(.*)/& 12/' 这句话貌似也是可以在我们中特定的行进行 添加数字
0

wsw13640218682

赞同来自:

铭哥的弄得有点复杂,其实直接这样就好:sed  '1,$s/$/ 12/'

这个以asl和sdk开头的开始插入空格再加12
sed  '/\ 这个以asl和sdk开头的结尾
sed  '/\
0

lyhabc

赞同来自:

蓝色风暴 发表于 2015-12-1 09:44
我觉得阿铭老师这里有点搞复杂了,就其实就像你书里面讲的一样,可以用简单的方法实现,下面我分别在符合条 ...

这样就行拉
sed 's/root/abc &/' /etc/passwd
0

lyhabc

赞同来自:

蔡炳森 发表于 2016-2-25 19:22
sed -r 's/^(root)(.*)/& 12/' 这句话貌似也是可以在我们中特定的行进行 添加数字

sed -r 's/(^root)(.*)/& 12/' /etc/passwd
0

lyhabc

赞同来自:

wsw13640218682 发表于 2016-3-10 09:28
铭哥的弄得有点复杂,其实直接这样就好:sed  '1,$s/$/ 12/'

这个以asl和sdk开头的开始插入空格再加12
...

其实直接这样就好:sed  '1,$s/$/ 12/'


sed  's/.*/& 12/'  /etc/passwd

记太多只会造成自己的记忆负担

0

yonself

赞同来自:

zxc123 发表于 2015-9-29 15:43
sed -n 's/ \(^a.*\)/ \1 123\p' test.txt

输出结果:

你这个输出结果怎么是12
0

tytywu

赞同来自:

sed 's/\(^a.*\)/&12/' test
0

kevinjin

赞同来自:

不用脱意更好:

sed -r 's/(^a.*$)/& 12/' 2.txt
0

hyhmnn

赞同来自:

这个也可以啊

sed '1s/^.*$/&:1/' a.txt

0

成蹊

赞同来自:

感觉这种写法思路比较啰嗦

sed ‘/^a/s/$/ 12/’ test

这样更清晰,先匹配a开头的行,再讲行尾替换成 12

哈哈

0

王兵

赞同来自:

^$   表示空行

[root@wangbing-1 opt]# sed  's/^$/&13/g' test 

aaert

fff

13

fgfgf hello

13

abcd

AAAA

0

langlaile

赞同来自:

sed -r `s/^a(.*)/& 999/g' test

这样也可以啊

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: