在Shell中读取文件

在Shell中读取文件,一次一行进行处理。用for处理起来比较简单,但是如果一行中有空格分隔的话,那么处理起来如果把一行作为一个参数,用for就不行了,变通一下的做法有很多中,比如用awk。昨天在处理这个问题花了一点时间研究了一下shell读取文件的方法,如下:

#!/bin/ksh

 

cat file1 | while read line
do
  line2=`echo $line | sed ‘s//*////*/g’ `
# echo "$line2"
  grep "$line2" file2 > /dev/null
  a=$?
  grep "$line2" file3 >/dev/null
  b=$?
# echo "a=$a,b=$b"
  if [[ $a == 0 ]] && [[ $b == 0 ]]
  then
    echo $line
  fi
done
ricky@ricky-desktop:~$
 

这个脚本是用来实现如下的需求:
1)比较三个文件中相同的部分,输出
2)每个文件中的内容中有些特殊字符,在grep的时候需要进行特殊处理,用sed进行了替换
3)因为文件内容中有空格,所以读取的时候不能用传统的for x in a b c的方法

文件内容大致如下:

ricky@ricky-desktop:~$ more file1
line1 32* 256 megabyte (s )
line2 32* 256 megabyte (s )
line3 32* 256 megabyte (s )
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值