这个命令怎么写

sh/bash/dash/ksh/zsh等Shell脚本
回复
noovesky
帖子: 8
注册时间: 2009-01-13 12:03
送出感谢: 0
接收感谢: 0

这个命令怎么写

#1

帖子 noovesky » 2009-01-13 12:10

1.输出文件a.txt中第2,3个空格之间的内容 ,若是在第n和n+1个空格之间呢?
2.已知文件b.txt中内容为:1.c 2.c 3.c 4.c. 用sed输出b.txt中第2个含.c的字符串,这里即2.c
最好用sed
上次由 noovesky 在 2009-01-15 17:33,总共编辑 2 次。
头像
bones7456
论坛版主
帖子: 8495
注册时间: 2006-04-12 20:05
来自: 杭州
送出感谢: 0
接收感谢: 8 次
联系:

Re: 这个命令怎么写

#2

帖子 bones7456 » 2009-01-13 14:11

1.

代码: 全选

cut -d " " -f 3
2. 非要sed会很累.
关注我的blog: ε==3
头像
xiooli
帖子: 6956
注册时间: 2007-11-19 21:51
来自: 成都
送出感谢: 0
接收感谢: 3 次
联系:

Re: 这个命令怎么写

#3

帖子 xiooli » 2009-01-13 14:14

1, awk '{print $3}' a.txt
2, awk '{print $2}' b.txt|grep ".c"
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙
送出感谢: 4 次
接收感谢: 256 次

Re: 这个命令怎么写

#4

帖子 eexpress » 2009-01-13 14:17

sed -n '2p'
● 鸣学
noovesky
帖子: 8
注册时间: 2009-01-13 12:03
送出感谢: 0
接收感谢: 0

Re: 这个命令怎么写

#5

帖子 noovesky » 2009-01-13 21:15

最好用sed,我手机上没cut,3楼的命令报错
头像
goodluck1982
帖子: 171
注册时间: 2007-07-05 2:48
送出感谢: 0
接收感谢: 0

Re: 这个命令怎么写

#6

帖子 goodluck1982 » 2009-01-14 10:06

手机? Moto Linux Mobile ?
noovesky
帖子: 8
注册时间: 2009-01-13 12:03
送出感谢: 0
接收感谢: 0

Re: 这个命令怎么写

#7

帖子 noovesky » 2009-01-14 21:02

goodluck1982 写了:手机? Moto Linux Mobile ?
moto roka e6. linux系统,有些命令没有,有些被精简了
头像
goodluck1982
帖子: 171
注册时间: 2007-07-05 2:48
送出感谢: 0
接收感谢: 0

Re: 这个命令怎么写

#8

帖子 goodluck1982 » 2009-01-14 21:33

noovesky 写了:
goodluck1982 写了:手机? Moto Linux Mobile ?
moto roka e6. linux系统,有些命令没有,有些被精简了
呵呵,猜就是
我的是E2
aerofox
帖子: 1453
注册时间: 2008-05-24 8:30
送出感谢: 2 次
接收感谢: 31 次

Re: 这个命令怎么写

#9

帖子 aerofox » 2009-01-15 6:08

代码: 全选

sed 's/[^ ]* [^ ]* //; s/ .*//' a.txt
sed 's/[^ ]* //; s/ .*//' b.txt
aerofox
帖子: 1453
注册时间: 2008-05-24 8:30
送出感谢: 2 次
接收感谢: 31 次

Re: 这个命令怎么写

#10

帖子 aerofox » 2009-01-15 12:28

方法是多样的,用 shell 内部命令也可以解决:

代码: 全选

read a b c < b.txt
echo $b
noovesky
帖子: 8
注册时间: 2009-01-13 12:03
送出感谢: 0
接收感谢: 0

Re: 这个命令怎么写

#11

帖子 noovesky » 2009-01-15 17:18

aerofox 写了:

代码: 全选

sed 's/[^ ]* [^ ]* //; s/ .*//' a.txt
sed 's/[^ ]* //; s/ .*//' b.txt
如果要求是第n和n+1个空格之间呢?
aerofox
帖子: 1453
注册时间: 2008-05-24 8:30
送出感谢: 2 次
接收感谢: 31 次

Re: 这个命令怎么写

#12

帖子 aerofox » 2009-01-15 21:15

noovesky 写了:
aerofox 写了:

代码: 全选

sed 's/[^ ]* [^ ]* //; s/ .*//' a.txt
sed 's/[^ ]* //; s/ .*//' b.txt
如果要求是第n和n+1个空格之间呢?

代码: 全选

n=2
sed "s/\([^ ]* \)\{$n\}//; s/ .*//" a.txt
noovesky
帖子: 8
注册时间: 2009-01-13 12:03
送出感谢: 0
接收感谢: 0

Re: 这个命令怎么写

#13

帖子 noovesky » 2009-01-15 21:56

aerofox 写了:
noovesky 写了:
aerofox 写了:

代码: 全选

sed 's/[^ ]* [^ ]* //; s/ .*//' a.txt
sed 's/[^ ]* //; s/ .*//' b.txt
如果要求是第n和n+1个空格之间呢?

代码: 全选

n=2
sed "s/\([^ ]* \)\{$n\}//; s/ .*//" a.txt
非常感谢。我也想到了用\{$n\},不过我用',出错了。
“ 与 ' 有什么区别
aerofox
帖子: 1453
注册时间: 2008-05-24 8:30
送出感谢: 2 次
接收感谢: 31 次

Re: 这个命令怎么写

#14

帖子 aerofox » 2009-01-15 23:21

双引号内会做变量名扩展,就是把$n换成它的值,单引号不行。
回复

回到 “Shell脚本”