欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

26. Bash Shell - 文本处理:cut、paste、join

程序员文章站 2024-03-24 14:17:16
...

开篇词

我们可以借助 Linux 提供的 cutpastejoin 命令来提取、重复或合并文本文件内容。
 

借助 cut 来打印选中的部分

我们来为 cut 命令准备一些测试数据:

printf '%s\n' 001:andy:30:root 002:mary:26:user 003:anna:22:user 004:john:24:user 005:jeff:28:user >> cut_file
printf '%s\t%s\t%s\t%s\n' '006' 'andy' '30' 'root' '007' 'mary' '26' 'user' '008' 'anna' '22' 'user' '009' 'john' '24' 'user' '010' 'jeff' '28' 'user' >> cut_file
cat cut_file

26. Bash Shell - 文本处理:cut、paste、join
 

提取指定的字节数

我们可以加入 -b--bytes 参数来指定要输出的字节数:

cut -b 1-10 cut_file
cut --bytes 1-10 cut_file

26. Bash Shell - 文本处理:cut、paste、join
 

提取指定的字符数

我们可以加入 -c--characters 参数来指定要输出的字符数:

cut -c 1-10 cut_file
cut --characters 1-10 cut_file

26. Bash Shell - 文本处理:cut、paste、join
 

提取指定的列数

默认情况下,-f--fields 参数通过 TAB 来区分开每一列内容:

cut -f 1 -s cut_file
cut --fields 1 --only-delimited cut_file

26. Bash Shell - 文本处理:cut、paste、join
所以我们需要添加一个额外的 -d--delimiter 参数来允许 -f--fields 参数根据指定的分隔符来区分每一列:

cut -f 1 -d ':' -s cut_file
cut --fields 1 --delimiter ':' --only-delimited cut_file

26. Bash Shell - 文本处理:cut、paste、join
 

借助 paste 来合并文件的行

我们来为 paste 命令准备一些测试数据:

printf '%s\n' file1a file1b file1c file1d file1e file1f > paste_file1
printf '%s\n' file2a file2b file2c file2d file2e file2f > paste_file2
cat paste_file1
cat paste_file2

26. Bash Shell - 文本处理:cut、paste、join
 

按顺序提取内容

我们可以借助 paste 命令来按顺序输出两个文件的内容:

paste paste_file1 paste_file2

26. Bash Shell - 文本处理:cut、paste、join
 

重复内容

paste 命令支持重复显示同一个文件的内容:

paste paste_file1 paste_file2 paste_file1

26. Bash Shell - 文本处理:cut、paste、join
 

混合来自标准输入的内容

通过借助 - 符号,我们可以将输入流中文件的内容分发至每一个 - 符号上:

paste - - - < paste_file1

26. Bash Shell - 文本处理:cut、paste、join
我们还可以这样做:

paste - paste_file1 - paste_file2 - < paste_file1

26. Bash Shell - 文本处理:cut、paste、join
 

借助 join 来使两个文件的内容交汇

我们来为 paste 命令准备一些测试数据:

printf '%s\n' 'ID1 User1' 'ID2 User2' 'ID3 User3' 'ID5 User5' > join_file1
printf '%s\n' 'ID1 User1' 'ID3 User3' 'ID4 User4' > join_file2
cat join_file1
cat join_file2

26. Bash Shell - 文本处理:cut、paste、join
我们可以借助 join 来从两个文件中导出重叠的内容:

join join_file1 join_file2

26. Bash Shell - 文本处理:cut、paste、join
 

我所撰写的英文版本

26. Bash Shell - Text Processing: cut, paste, join
 

引用

 

参见

想看手册的其他内容?请访问该手册的所属专栏:《Linux 管理员手册:既简单又深刻