cut命令,用于按照指定方式分割行
参数列表:
-b 按字节选取 忽略多字节字符边界,除非也指定了 -n 标志
-c 按字符选取
-d 自定义分隔符,默认为制表符。
-f 与-d一起使用,指定显示哪个区域。
that contains no delimiter character, unless
the -s option is specified
--complement 补全选中的字节、字符或域
-s, --only-delimited 不打印没有包含分界符的行
--output-delimiter=字符串 使用指定的字符串作为输出分界符,默认采用输入
的分界符
范围控制:
n:只有第n项
n-:从第n项一直到行尾
n-m:从第n项到第m项(包括m)
-m:从一行的开始到第m项(包括m)
-:从一行的开始到结束的所有项
应用:
cat file | cut -b1-3 选取每行第1到3字节
cat file |cut -b1-3,5-7,8 选取每行第1到3,5到7,以及第8个字节(先将数字从小到大排序,然后操作)
-n参数用于指定无需分割多字节。
utf-8编码时,三个字节表示一个中文汉字。不加-n参数时,1-3表示每行第一个字。
加中文汉字时,不分割多字节,于是1-3显示每行的第1到3个文字。
更直接适用于中文的参数是-c,无需为不同编码下中文需要不同字节数所限制。
-d 自定义分隔符,与-f一起使用,确定显示范围。
join:将两个文件里指定栏位同样的行连接起来
参 数:
-a<1或2> 除了显示原来的输出内容之外,还显示指令文件中没有相同栏位的行。
-e<字符串> 若[文件1]与[文件2]中找不到指定的栏位,则在输出中填入选项中的字符串。
-i或--igore-case 比较栏位内容时,忽略大小写的差异。
-o<格式> 按照指定的格式来显示结果。
-t<字符> 使用栏位的分隔字符。
-v<1或2> 跟-a相同,但是只显示文件中没有相同栏位的行。
-1<栏位> 连接[文件1]指定的栏位。
-2<栏位> 连接[文件2]指定的栏位。
--help 显示帮助。
--version 显示版本信息。
应用:
准备两个文件
join join1.txt join2.txt 默认已两个文件的第一行做匹配字段,默认以空格(不限个数)做分隔符
join -j 1 join1.txt join2.txt -j参数指定了以两个文件第一列做匹配字段,等同于join join1.txt join2.txt
join -1 2 -2 3 file1.txt file2.txt 以第一个文件的第二列和第二个文件的第三列做匹配字段。因为第二个文件里第三列的两个4都与第一个文件里第三行匹配,因此输出。
join -o 1.1 -o 1.2 -o 1.3 -o 2.1 -o 2.2 -o 2.3 -e 'empty' -a 1 file1.txt file2.txt 匹配两个文件,如果匹配到,则第一个文件的第一列(-o 1.1),第二列(-o 1.2),第三列(-o 1.3),输出,并紧接着输出第二个文件的第一列(-o 2.1),第二列(-o 2.2),第三列(-o 2.3) 当匹配不到时,-a 1参数指定将第一个文件全部显示,第二个文件部分用empty填补
.join -v 1 file1.txt file2.txt -v参数指定,将1中不匹配的行输出
join 标准输入
有时我们须要将多个格式同样的文件join到一起,而join接受的是两个文件的指令,此时我们能够使用管道和字符“-"来实现
join file1 file2 | join - file3 | join - file4
这样就能够将四个文件 连接到 一起了。