shell03:字段处理(cut join)

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字节

shell03:字段处理(cut join)_第1张图片

cat file |cut -b1-3,5-7,8  选取每行第1到3,5到7,以及第8个字节(先将数字从小到大排序,然后操作)

shell03:字段处理(cut join)_第2张图片

-n参数用于指定无需分割多字节。

utf-8编码时,三个字节表示一个中文汉字。不加-n参数时,1-3表示每行第一个字。

加中文汉字时,不分割多字节,于是1-3显示每行的第1到3个文字。

shell03:字段处理(cut join)_第3张图片

更直接适用于中文的参数是-c,无需为不同编码下中文需要不同字节数所限制。

shell03:字段处理(cut join)_第4张图片

-d 自定义分隔符,与-f一起使用,确定显示范围。

shell03:字段处理(cut join)_第5张图片

join:将两个文件里指定栏位同样的行连接起来

参  数: 
   
    -a<1或2>   除了显示原来的输出内容之外,还显示指令文件中没有相同栏位的行。 
   
    -e<字符串>   若[文件1]与[文件2]中找不到指定的栏位,则在输出中填入选项中的字符串。 
   
    -i或--igore-case   比较栏位内容时,忽略大小写的差异。 
   
    -o<格式>   按照指定的格式来显示结果。 
   
    -t<字符>   使用栏位的分隔字符。 
   
    -v<1或2>   跟-a相同,但是只显示文件中没有相同栏位的行。 
   
    -1<栏位>   连接[文件1]指定的栏位。 
   
    -2<栏位>   连接[文件2]指定的栏位。 
   
    --help   显示帮助。 

    --version   显示版本信息。

应用:

准备两个文件

shell03:字段处理(cut join)_第6张图片

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都与第一个文件里第三行匹配,因此输出。

shell03:字段处理(cut join)_第7张图片

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填补

shell03:字段处理(cut join)_第8张图片

.join -v 1 file1.txt file2.txt   -v参数指定,将1中不匹配的行输出

shell03:字段处理(cut join)_第9张图片

 join 标准输入
有时我们须要将多个格式同样的文件join到一起,而join接受的是两个文件的指令,此时我们能够使用管道和字符“-"来实现
join file1 file2 | join - file3 | join - file4 
这样就能够将四个文件 连接到 一起了。

你可能感兴趣的:(linux)