VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2373|回复: 10

一个shell脚本的问题?

[复制链接]

5

主题

14

帖子

11.00

积分

新手上路

Rank: 1

积分
11.00
发表于 2020-1-28 22:00:02 | 显示全部楼层 |阅读模式
怎么写一个shell脚本来显示一个给定文件的奇数行(1,3,5....行)?
回复

使用道具 举报

0

主题

25

帖子

19.00

积分

新手上路

Rank: 1

积分
19.00
发表于 2020-3-3 14:15:01 | 显示全部楼层
sed -n "p;n" /etc/profile
回复

使用道具 举报

0

主题

25

帖子

19.00

积分

新手上路

Rank: 1

积分
19.00
发表于 2020-3-3 17:30:02 | 显示全部楼层
awk ' { if (NR%2 ==1)  print $0}' /etc/profile
回复

使用道具 举报

0

主题

10

帖子

8.00

积分

新手上路

Rank: 1

积分
8.00
发表于 2020-3-4 21:15:01 | 显示全部楼层
如果是文本文件,你可以直接处理的
linenum=1
lines=`cat filename`
for line in ${lines} ;do
   if [ $[ ${linenum}%2 ] -ne 0 ] ;then
           echo ${line}
   fi
   linenum=$[ ${linenum}+1 ]
done
回复

使用道具 举报

0

主题

10

帖子

8.00

积分

新手上路

Rank: 1

积分
8.00
发表于 2020-3-5 05:15:01 | 显示全部楼层
当然前面的方法也都是对的。
回复

使用道具 举报

5

主题

14

帖子

11.00

积分

新手上路

Rank: 1

积分
11.00
 楼主| 发表于 2020-3-11 05:00:02 | 显示全部楼层
请问,line 这个变量的值怎么变化的
回复

使用道具 举报

5

主题

14

帖子

11.00

积分

新手上路

Rank: 1

积分
11.00
 楼主| 发表于 2020-3-11 13:00:02 | 显示全部楼层
#! /bin/sh
echo "input filename"
read fname
linenum=1
lines='cat filename'
for linenum in ${lines} ;do
   if [ $[ ${linenum}%2 ] -ne 0 ] ;then
           echo ${linenum}
   fi
   linenum=$[ ${linenum}+1 ]
done


这样写有错吗?
怎么调试不出来啊
回复

使用道具 举报

5

主题

14

帖子

11.00

积分

新手上路

Rank: 1

积分
11.00
 楼主| 发表于 2020-3-11 15:00:01 | 显示全部楼层
#!  /bin/sh  
echo    "input  filename  "  
read  fname  
linenum=1  
lines='cat  fname'  
for  linenum  in  ${lines}  ;do  
     if  [  $[  ${linenum}%2  ]  -ne  0  ]  ;then   
                     echo  ${linenum}  
     fi  
     linenum=$[  ${linenum}+1  ]  
done  


这样写有错吗?  
怎么调试不出来啊
回复

使用道具 举报

0

主题

10

帖子

8.00

积分

新手上路

Rank: 1

积分
8.00
发表于 2020-3-22 00:30:01 | 显示全部楼层
写成这样啊 $fname
而且你的cat 那里也写错了,那个不是单引号,而是反引号,一般在键盘上1的左边那个,意思是执行一个shell命令,也可以替换成$( )
linenum=1
read  filename
lines=`cat ${filename}`
for line in ${lines} ;do
if [ $[ ${linenum}%2 ] -ne 0 ] ;then
echo ${line}
fi
linenum=$[ ${linenum}+1 ]
done
回复

使用道具 举报

0

主题

10

帖子

8.00

积分

新手上路

Rank: 1

积分
8.00
发表于 2020-3-22 15:15:02 | 显示全部楼层
不过上面的代码实际上有问题的,就是一行中不能再有空格之类的分词符号了,否则就会出错,更好的方法还是1231456的方法。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表