shell实战:多种方式实现获取列内容

简介:

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

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#!/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种方式的优劣。可以了解以下内容。

  1. 文本处理工具:sed,tr

  2. 文本列选择工具:cut,awk

  3. 文本行选择工具:head,tail

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

  5. 变量声明:declare

  6. 参数处理:xargs



本文转自 randy_shandong 51CTO博客,原文链接:http://blog.51cto.com/dba10g/1914312,如需转载请自行联系原作者
相关文章
|
4月前
|
算法 Shell Linux
【Shell 命令集合 文档编辑】Linux 删除指定列的内容 colrm 命令使用教程
【Shell 命令集合 文档编辑】Linux 删除指定列的内容 colrm 命令使用教程
69 0
|
4月前
|
Shell
shell脚本实战示例
shell脚本实战示例
79 6
|
4月前
|
Ubuntu Linux Shell
【Linux操作系统】探秘Linux奥秘:shell 编程的解密与实战
【Linux操作系统】探秘Linux奥秘:shell 编程的解密与实战
102 0
|
4月前
|
Shell 索引
shell脚本入门到实战(四)- 数组
shell脚本入门到实战(四)- 数组
|
4月前
|
Shell
shell脚本入门到实战(三) - 变量
shell脚本入门到实战(三) - 变量
|
4月前
|
Shell Linux 人机交互
shell脚本入门到实战(二)--shell输入和格式化输出
shell脚本入门到实战(二)--shell输入和格式化输出
324 0
|
Shell 测试技术
Shell编程实战的命令测试
Shell编程实战的命令测试
51 1
|
4月前
|
分布式计算 Java 大数据
【大数据技术Hadoop+Spark】HDFS Shell常用命令及HDFS Java API详解及实战(超详细 附源码)
【大数据技术Hadoop+Spark】HDFS Shell常用命令及HDFS Java API详解及实战(超详细 附源码)
568 0
|
3月前
|
移动开发 监控 安全
【实战指南】从零构建嵌入式远程Shell,提升跨地域协作效率
构建嵌入式远程Shell的文章概述: - 目标:解决嵌入式软件测试中的远程调试难题,提供轻量级解决方案。 - 功能:包括远程交互、命令执行与反馈,强调多客户端并发连接和稳定性。 - 设计:基于Socket服务端架构,使用I/O多路复用和popen函数,确保命令执行与结果反馈。 - 需求:支持命令解析、执行和结果回传,考虑网络不稳定情况下的连接保持。 - 安全性:仅限内部调试,未详细讨论加密等安全措施。 - 实现:关注点在Socket服务端程序,包括监听、数据过滤和命令处理。 - 测试:通过 Telnet 和Windows网络助手验证连接和命令执行功能。
294 62
|
监控 Shell 数据处理
shell编程实战需求分析
shell编程实战需求分析
74 1