Cut:打印选定部分的行

来自泡泡学习笔记
BrainBs讨论 | 贡献2023年12月14日 (四) 09:29的版本 (创建页面,内容为“ cut将标准输出中每个输入文件的每一行的选定部分写入,或者如果没有给定文件或文件名为“-”,则写入标准输入。概要: <pre>cut 选项… [文件]…</pre> 在下面的表格中,字节列表、字符列表和字段列表是一组或多个数字或范围(用短横线分隔的两个数字),由逗号分隔。字节、字符和字段从1开始编号。可以给出不完整的范围:-m表示“1-m”;’n-…”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳到导航 跳到搜索

cut将标准输出中每个输入文件的每一行的选定部分写入,或者如果没有给定文件或文件名为“-”,则写入标准输入。概要:

cut 选项… [文件]…

在下面的表格中,字节列表、字符列表和字段列表是一组或多个数字或范围(用短横线分隔的两个数字),由逗号分隔。字节、字符和字段从1开始编号。可以给出不完整的范围:-m表示“1-m”;’n-’表示“n”到行尾或最后一个字段。列表元素可以重复、重叠,并按任何顺序指定;但选定的输入按照读取的顺序写入,并且只写入一次。


选项

‘-b 字节列表’

‘–bytes=字节列表’

仅打印位于字节列表中的位置的字节。制表符和退格符与其他字符一样;它们占用1个字节。如果指定了输出分隔符(参见–output-delimiter的描述),则在选定字节范围内输出该字符串。


‘-c 字符列表’

‘–characters=字符列表’

仅打印位于字符列表中的位置的字符。目前与-b相同,但国际化将改变这一点。制表符和退格符与其他字符一样;它们占用1个字符。如果指定了输出分隔符(参见–output-delimiter的描述),则在选定字节范围内输出该字符串。


‘-f 字段列表’

‘–fields=字段列表’

仅打印位于字段列表中的字段。字段默认由制表符分隔。还可以打印任何不包含分隔符字符的行,除非指定了–only-delimited(-s)选项。


注意awk支持更复杂的字段处理,如重新排序字段和处理与空白字符对齐的字段。默认情况下,awk使用(并丢弃)运行空白字符来分隔字段,并忽略前导和尾随空白。

awk '{print $2}'      # 打印第二个字段
awk '{print $(NF-1)}' # 打印倒数第二个字段
awk '{print $2,$1}'   # 重新排序前两个字段

注意,尽管cut可以接受任意顺序的字段规范,但输出总是按照在文件中遇到的顺序。


在不太可能的情况下,如果awk不可用,可以使用join命令,以上述方式处理空白字符。

join -a1 -o 1.2     - /dev/null # 打印第二个字段
join -a1 -o 1.2,1.1 - /dev/null # 重新排序前两个字段


‘-d 输入分隔符字节’

‘–delimiter=输入分隔符字节’

使用-f,将输入分隔符字节的第一个字节用作输入字段分隔符(默认为制表符)。


‘-n’

不要拆分多字节字符(目前没有操作)。


‘-s’

‘–only-delimited’

对于-f,不要打印不包含字段分隔符字符的行。通常,任何没有字段分隔符的行都会原样打印。


‘–output-delimiter=输出分隔符字符串’

使用-f,输出字段由输出分隔符字符串分隔。默认情况下,使用输入分隔符。当使用-b或-c选择字节或字符偏移范围(而不是字段范围)时,在选定字节范围内非重叠范围之间输出输出分隔符字符串。


‘–complement’

此选项是GNU扩展。使用-b、-c或-f选项选择的字节、字符或字段的补集进行打印。换句话说,不打印通过这些选项指定的字节、字符或字段。当有很多字段并且想打印除几个之外的所有字段时,此选项很有用。


‘-z’

‘–zero-terminated’

用零字节而不是换行符(ASCII LF)分隔项目。即,将输入视为由ASCII NUL分隔的项目,并以ASCII NUL终止输出项目。此选项可以与“perl -0”、“find -print0”和“xargs -0”一起使用,以便可靠地处理任意文件名(即使其中包含空格或其他特殊字符)。


退出状态为0表示成功,非零值表示失败。