linux 获取列数据,shell实战:多种方式实现获取列内容

自己不是专业的linux,平时工作中也不用linux编程,自学一些linux shell编程,忘了学,学了忘,效率不高。今天权当复习吧。

想想这样一个情景吧,获取某一行的部分列值。

考虑这样的输入:“root:x:0:0:root:/root:/bin/bash”,现在我们获取用户及shell信息。自己暂时想到的5种实现方式。#!/bin/bash

##############################################

#第二种实现 普通循环

##############################################

line="root:x:0:0:root:/root:/bin/bash";

oldIFS=$IFS;

IFS=":";

declare -i count=0;

#count=0;

for item in $line;

do

[ $count -eq 0 ] && user=$item

if [[ $count -eq 6 ]]; then

shell=$item

fi

#let count++

count=$[ $count+1 ]

#count=$(($count+1))

#count=`expr $count+1`

#count=$(expr $count+1);

done

IFS=$oldIFS;

echo 1: $user\'s shell is  $shell by process:$$;

##############################################

#第二种实现 借助sed命令;

##############################################

user=`echo $line |sed 's/:.*$//'`;

shell=$(echo $line |sed 's/^.*://');

echo 2: $user\'s shell is  $shell by process:$$;

##############################################

#第3种实现 借助cut命令;

##############################################

user=`echo $line |cut -d: -f1`;

shell=$(echo $line |cut -d: -f7);

echo 3: $user\'s shell is  $shell by process:$$;

##############################################

#第4种实现  xargs使用

#############################################

echo $line |xargs -d: -n 1 |tr -s '\n'> file4

user=`cat  file4 | head -n 1`

shell=`cat file4 | tail -n 1`;

echo 4: $user\'s shell is  $shell by process:$$;

rm -rf file4 2>>/dev/null

##############################################

#第5种实现  awk使用

#############################################

echo $line |awk  -F ':'  '{print "5:" $1 " '\''s "  " shell is" $7 }'

分析:抛开5种方式的优劣。可以了解以下内容。文本处理工具:sed,tr

文本列选择工具:cut,awk

文本行选择工具:head,tail

计数运算多种方式:$[],$(()),``

变量声明:declare

参数处理:xargs

其实,在编写过程,连自己经常使用的命令,自己都记不起来。看来会和熟练还是不一样的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值