又来求高人指点了。。

sh/bash/dash/ksh/zsh等Shell脚本
回复
头像
13378333
帖子: 322
注册时间: 2012-05-31 12:00

又来求高人指点了。。

#1

帖子 13378333 » 2012-08-06 20:24

写一个脚本,非交互模式,修改一个文件的第100行内容随意,。。。然后追加abc到101行。。。文件名随意。。。
求指点 :em09
头像
cuihao
帖子: 4793
注册时间: 2008-07-24 11:33
来自: 郑州
联系:

Re: 又来求高人指点了。。

#2

帖子 cuihao » 2012-08-06 22:14

hint:
使用 sed。
求人不如求它仨: 天蓝的Wiki 屎黄的Wiki 绿
Site: CUIHAO.TK    Twitter: @cuihaoleo
Machine: Athlon64 X2 5200+ / 2x2GB DDR2-800 / GeForce GTS 450
AD: ~まだ見ぬ誰かの笑顔のために~
过七不候
帖子: 4
注册时间: 2012-07-22 16:35

Re: 又来求高人指点了。。

#3

帖子 过七不候 » 2012-08-19 20:45

用head + tail 应该可以搞定,我这边试了一下。

代码: 全选

head -99 test.txt > tmp.txt

echo "test" >> tmp.txt

var=`head -101 test.txt | tail -1`abc
echo $var >> tmp.txt

num=`wc -l test.txt | awk '{print $1}'`
tailline=`expr $num - 101`

tail -$tailline test.txt >> tmp.txt

cat tmp.txt > test.txt
rm tmp.txt
头像
13378333
帖子: 322
注册时间: 2012-05-31 12:00

Re: 又来求高人指点了。。

#4

帖子 13378333 » 2012-08-19 21:31

过七不候 写了:用head + tail 应该可以搞定,我这边试了一下。

代码: 全选

head -99 test.txt > tmp.txt

echo "test" >> tmp.txt

var=`head -101 test.txt | tail -1`abc
echo $var >> tmp.txt

num=`wc -l test.txt | awk '{print $1}'`
tailline=`expr $num - 101`

tail -$tailline test.txt >> tmp.txt

cat tmp.txt > test.txt
rm tmp.txt

高人啊,不用sed
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: 又来求高人指点了。。

#5

帖子 lilydjwg » 2012-08-19 22:34

代码: 全选

sed -e '100s/xxx/yyy/' -e '101s/$/abc/'
这个意思?
头像
13378333
帖子: 322
注册时间: 2012-05-31 12:00

Re: 又来求高人指点了。。

#6

帖子 13378333 » 2012-08-19 23:45

lilydjwg 写了:

代码: 全选

sed -e '100s/xxx/yyy/' -e '101s/$/abc/'
这个意思?
怎么都是s? :em03
头像
13378333
帖子: 322
注册时间: 2012-05-31 12:00

Re: 又来求高人指点了。。

#7

帖子 13378333 » 2012-08-20 9:45

记录一下。。
sed -e "s|%%PREFIX%%|/usr/local/nginx|" \
-e "s|%%PID_PATH%%|/usr/local/nginx/logs/nginx.pid|" \
-e "s|%%CONF_PATH%%|/usr/local/nginx/conf/nginx.conf|" \
-e "s|%%ERROR_LOG_PATH%%|/usr/local/nginx/logs/error.log|" \
< man/nginx.8 > objs/nginx.8
chengmoYS
帖子: 125
注册时间: 2007-10-22 22:40

Re: 又来求高人指点了。。

#8

帖子 chengmoYS » 2012-08-20 9:49

sed awk regex高效
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: 又来求高人指点了。。

#9

帖子 lilydjwg » 2012-08-20 11:28

13378333 写了:记录一下。。
sed -e "s|%%PREFIX%%|/usr/local/nginx|" \
-e "s|%%PID_PATH%%|/usr/local/nginx/logs/nginx.pid|" \
-e "s|%%CONF_PATH%%|/usr/local/nginx/conf/nginx.conf|" \
-e "s|%%ERROR_LOG_PATH%%|/usr/local/nginx/logs/error.log|" \
< man/nginx.8 > objs/nginx.8
这里不需要对输入进行重定向的,sed 会处理在命令行上列出的文件。(去掉 < 即可)
13378333 写了:
lilydjwg 写了:

代码: 全选

sed -e '100s/xxx/yyy/' -e '101s/$/abc/'
这个意思?
怎么都是s? :em03
你要找 m 吗? :em05
回复