扩展:grep(egrep)、awk
grep
grep:
[root@adai003 grep]# grep 'root\|daemon' passwd
root:x:0:0:roprot:/root:/bin/bash
daemon:x:2:2:daemon:/sbin:/sbin/nologin
egrep:
[root@adai003 grep]# egrep 'root|daemon' passwd
root:x:0:0:roprot:/root:/bin/bash
daemon:x:2:2:daemon:/sbin:/sbin/nologin
awk:
[root@adai003 grep]# awk '/root|daemon/' passwd
root:x:0:0:roprot:/root:/bin/bash
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@adai003 grep]# awk '/root/ || /daemon/ {print}' passwd
root:x:0:0:roprot:/root:/bin/bash
daemon:x:2:2:daemon:/sbin:/sbin/nologin
awk
用awk编写生成以下结构文件的程序:
1,1,0000000001,0000000001,0000000001,0000000001,0000000001,0000000001,2005100110101
2,2,0000000002,0000000002,0000000002,0000000002,0000000002,0000000002,2005100110101
(最后列使用现在的时间,格式为YYYYMMDDHHMISS)各列的值应如下所示,每增加一行便加1,共500万行。
方法1:
[root@adai003 grep]# awk 'BEGIN{for(i=1;i<=5;i++)printf("%d,%d,%010d,%010d,%010d,%010d,%010d,%010d,%d\n",i,i,i,i,i,i,i,i,strftime("%Y%m%d%H%M"))}'
1,1,0000000001,0000000001,0000000001,0000000001,0000000001,0000000001,201707071803
2,2,0000000002,0000000002,0000000002,0000000002,0000000002,0000000002,201707071803
3,3,0000000003,0000000003,0000000003,0000000003,0000000003,0000000003,201707071803
4,4,0000000004,0000000004,0000000004,0000000004,0000000004,0000000004,201707071803
5,5,0000000005,0000000005,0000000005,0000000005,0000000005,0000000005,201707071803
解析:
%d, %d, %010d, %010d, %010d, %010d, %010d, %010d, %d
1 1 0000000001 0000000001 0000000001 0000000001 0000000001 0000000001 201407200104
在此定义i为行数,如果要写多几行,就把这里的5改成需要的数字即可,例如:20 {for(i=1;i<=20;i++)
%010d: 0000000001 刚好10个数字。
方法2:使用shell脚本
#! /bin/bash
for i in `seq 1 5`
do
n=`echo "$i"|awk '{print length($0)}'`
export m=$[10-$n]
export o=`perl -e '$a='0';$b=$a x $ENV{"m"};print $b;'`
export j=$i
p=`perl -e '$c=$ENV{"o"}.$ENV{"j"};print $c;'`
echo "$i,$i,$p,$p,$p,$p,$p,$p,`date +%Y%m%d%H%M%S`"
done
注:其中用到了perl,所以脚本整体看起来比较啰嗦,希望能找到更好的解决办法。
PS: shell 执行效率很低,so 该脚本运行时间会很漫长!
或:
#!/bin/bash
for i in `seq 1 5`
do
n=`echo $i|awk '{print length($0)}'`
n_0=$[10-$n]
c_0=""
for j in `seq 1 $n_0`
do
c_0="$c_0"0""
done
echo $i,$i,$c_0$i,$c_0$i,$c_0$i,$c_0$i, $c_0$i,$c_0$i,`date +%Y%m%d%H%M%S`
done
运行结果同上!
[root@adai003 grep]# awk -F ':' '{print "This is a '"' "'" $1}' passwd |head -3
This is a ' root
This is a ' bin
This is a ' daemon
脱义单引号和空格!
注: 在awk中使用脱义字符‘\’是起不到作用的,如果想打印特殊字符,只能使用 '""' 这样的组合才可以。
这里自左至右为单引号、双引号、双引号、单引号其中两个单引号为一对,两个双引号为一对。想脱义$那就是'"$"'。
paste命令
>paste命令用于将多个文件按照列队列进行合并。
语法: paste [options] [filename1] [filename2]
Options:
-d:指定文件内容之间的分隔符
-s:串列进行而非平行处理(水平显示)
[root@adai003 grep]# paste file1 file2 |cat
1 a
22 bb
333 ccc
4444 dddd
333 ccc
22 bb
1 a
[root@adai003 grep]# paste -d '+' file1 file2 |cat
1+a
22+bb
333+ccc
4444+dddd
333+ccc
22+bb
1+a
[root@adai003 grep]# paste -s file1 file2 |cat
1 22 333 4444 333 22 1
a bb ccc dddd ccc bb a
相关推荐
### shell中常见命令与awk, sed的等价命令详解 #### 一、基本概念与工具简介 在Linux或Unix环境中,shell脚本是自动化任务处理的重要手段之一。shell提供了丰富的命令来实现各种功能,而`awk`和`sede`则是其中两个...
20. 数字字符串处理:可以使用 shell 命令来处理数字字符串,例如 `echo "zdfgrABd2d235d" | grep -o '[0-9]' | paste -sd ''`。 这些知识点涵盖了 Shell、awk 和 sed 命令的使用、变量赋值和取值、文件操作、权限...
在Linux系统中,`Sed`...以上就是`Sed`和`Awk`在某些场景下替代Linux其他命令的方法。它们提供了强大的文本处理能力,可以根据具体需求灵活应用。通过熟练掌握这些技巧,可以更加高效地处理Linux系统中的文本数据。
这个资源摘要信息主要介绍了 Linux 相关命令的详解,包括文本处理工具 awk、sed、grep、sort、uniq、cut、paste、join 等的语法规则、常用选项和示例应用。 awk 命令是Pattern Scanning and Processing Language,...
Linux笔记——命令:awk Linux笔记——命令:sed Linux笔记——命令:grep Linux笔记——命令:find Linux笔记——命令:Sort,uniq,join,cut,paste,split Linux笔记——shell基础:变量&本地变量&位置变量&特定变量...
### Linux 数据抽取命令详解 #### 一、正则表达式(Regular Expressions) 正则表达式是用于在文件中定位特定文本模式的强大工具。在Linux环境下,正则表达式的使用非常广泛,尤其是在处理文本文件时。 - **基本...
这一部分详尽地阐述了各种Unix命令,包括文件和目录操作(如ls、cd、mv、cp)、文本处理(如cat、more、less、grep、sed、awk)、进程管理(如ps、kill、nohup)以及系统信息查询(如who、uname、top)。这些命令是...
- 文本处理命令:如grep, sed, awk, sort, uniq, cut, paste等; - 系统管理命令:如ps, top, df, du, free, vmstat等; - 网络通信命令:如ifconfig, netstat, ssh, ftp, telnet等; - 磁盘管理命令:如fdisk, ...
`paste` 命令用于将多个文件的内容按列合并到一起。例如: ``` paste file1 file2 > combined_file ``` #### 26. cat - 显示文件内容 `cat` 命令用于显示文件内容。其他用于显示文件内容的命令还包括 `less` 和 `...
* paste 命令:用于文本数据合并 * tee 命令:用于数据输出 * xargs 命令:用于数据处理 三剑客命令包括: * grep 命令:用于字符串检索 * sed 命令:用于文本流编辑 * awk 命令:用于数据处理和文本处理 Shell ...
* awk:在文件中查找并处理模式 * sort:排序或归并文件 * uniq:去掉文件中的重复行 * comm:显示两有序文件的公共和非公共行 * wc:统计文件的字符数、词数和行数 * nl:给文件加上行号 这些命令可以帮助用户快速...
通过阅读提供的“Linux必学的60个命令v1.0.1.pdf”文件,你可以深入理解每个命令的用法和应用场景。同时,标签中的“源码”和“工具”提示了这份资料可能也涉及到使用这些命令处理源代码文件和工具的场景。虽然提供...
4. **四个强大的UNIX工具**:find、grep、sed、awk,这些工具被广泛应用于文本搜索与处理。 #### 二、常用Linux命令详解 ##### 2.1 命令的格式 - **一般Linux命令的格式**:`command [–options] [arguments]` -...
2. **命令篇**:这是本书的核心部分,详细介绍了各种Linux命令的用法、参数含义、实际应用场景等。 3. **高级篇**:探讨了Linux系统管理、网络配置、安全设置等方面的高级话题。 4. **附录**:提供了一些有用的补充...
Unix 的文本处理工具主要包括编辑器(如 `vi` 和 `emacs`)、过滤器(如 `grep` 和 `awk`)以及各种用于格式化和转换文本文件的实用程序。 ### Unix 文本处理中的核心工具 #### 1. **grep** `grep` 是一个用于搜索...
`cut` 命令用于切割文件的特定部分,如 `cut -c2 myfile.txt` 将删除 `myfile.txt` 文件中的第二列字符,配合 `paste` 命令可以实现数据的重组和分析。 #### 19. date `date` 命令显示或设置系统时间,如 `date` ...