抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

文本处理

awk

相较于 sed 常常作用于一整个行的处理, awk 则比较倾向于一行当中分成数个“字段”来处理。

awk 通常运行的模式是这样的:

awk [options] 'pattern {commands}' filename

awk 命令选项以及含义

选项含义
-F fs指定以 fs 作为输入行的分隔符,awk 命令默认分隔符为空格制表符
-f file从脚本文件中读取 awk 脚本指令,以取代直接在命令行中输入指令。
-v var=val在执行处理过程之前,设置一个变量 var,并给其设备初始值为 val

awk脚本命令

awk 的强大之处在于脚本命令,它由 2 部分组成,分别为匹配规则执行命令

整个脚本命令是用单引号('')括起,而其中的执行命令部分需要用大括号({})括起来

root@iZ2zeekdvpcczmvv80onokZ:~# cat a.txt 
hello world
hello china
你好 中国
hi tom

root@iZ2zeekdvpcczmvv80onokZ:~# awk '/^hello.*$/ {print "hello"}' a.txt 
hello
hello

内置数据字段变量

awk 的主要特性之一是其处理文本文件中数据的能力,它会自动给一行中的每个数据元素分配一个变量。

默认情况下,awk 会将如下变量分配给它在文本行中发现的数据字段:

  • $0 代表整个文本行;
  • $1 代表文本行中的第 1 个数据字段;
  • $2 代表文本行中的第 2 个数据字段;
  • $n 代表文本行中的第 n 个数据字段。

awk 中,默认的字段分隔符是任意的空白字符(例如空格制表符)。 在文本行中,每个数据字段都是通过字段分隔符划分的。awk 在读取一行文本时,会用预定义的字段分隔符划分每个数据字段。

root@iZ2zeekdvpcczmvv80onokZ:~# cat t1.txt 
a 1
b 2
c    3
root@iZ2zeekdvpcczmvv80onokZ:~# awk '{print $1,$2}' t1.txt 
a 1
b 2
c 3

输入分隔符和输出分隔符

当然,如果你要读取采用了其他字段分隔符的文件,可以用 -F 选项手动指定。

root@iZ2zeekdvpcczmvv80onokZ:~# cat t2.txt 
小米,18,男
小红,20,女
小李,19,男
root@iZ2zeekdvpcczmvv80onokZ:~# awk -F ',' '{print $1,$2,$3}' t2.txt 
小米 18 男
小红 20 女
小李 19 男

如果不加 ,则默认输出是没有分割符的。

root@iZ2zeekdvpcczmvv80onokZ:~# awk -F ',' '{print $1$2$3}' t2.txt 
小米18男
小红20女
小李19男

当然,如果想要指定其他输出分隔符,则需要使用 -v OFS=符号来手动指定。

root@iZ2zeekdvpcczmvv80onokZ:~# awk -F ',' -v 'OFS=$' '{print $1,$2,$3}' t2.txt 
小米$18$男
小红$20$女
小李$19$男

grep

sed

解压缩

tar

用法: tar [选项...] [FILE]...
  • -c:创建一个新归档

  • -x:从归档中解出文件

  • -t:列出归档内容

  • -z:通过 gzip 过滤归档

  • -j:通过 bzip2 过滤归档

  • -J:通过 xz 过滤归档

  • -v:详细地列出处理的文件

  • -f:使用的归档文件

  • -C:改变至目录 DIR

  • --exclude=PATTERN:排除以 PATTERN 指定的文件

当前目录文件

├── 1.txt
├── 2.txt
└── a
    └── a1.txt

1 directory, 3 files

归档所有文件到 test.tar

tar -cvf test.tar *

列出归档文件中的所有内容

tar -tvf test.tar 

解压到特定目录中

tar -xvf test.tar -C test2

排除特定文件,压缩其他文件

tar -cvf test2.tar --exclude=test.tar --exclude=test2  *

归档压缩到test.tar.gz

tar -czvf test.tar.gz *

解压tar.gz压缩文件

tar -xzvf test.tar.gz -C test3

其他压缩方式,只需要替换参数即可。

zip

评论