Linux和Unix系统中有许多实用的命令适用于解决过滤文本文件。cut是一个命令行程序,允许您从指定文件或管道内容中裁切一部分行,然后把结果打印出到标准输出。
它能够用于依据分隔符,字节位置和方向字符来裁切行一部分。在教学中,我们在这里根据具体案例和比较常见的裁切选项的实际为大家呈现如何使用Linux裁切命令。
cut命令的句法结构是cut OPTION... [FILE]...
。运用cut命令时,必须使用以下选项中的一个。
-f
/--fields=LIST
依据特定字段,一组字段或一系列字段来挑选。那也是常见选项。
-b
/--bytes=LIST
依据特定字节,一组字节或一个字节范围来选择。-c
/--characters=LIST
依据特定字符,一组字符或一系列字符来选择。
-d
/--delimiter
特定要所使用的分隔符,默认是TAB
分隔符。--complement
弥补选择。运用此选项时,cut将说明除选定主要内容以外的所有字节,字符或字段。
-s
/--only-delimited
默认情况下,cut将打印出不包含分隔符的行。运用此选项时,cut不易打印出不包含分隔符的行。
--output-delimiter
默认情况下运用输入分隔符作为导出来分隔符。此选项允许您特定不一样的导出分隔符。
cut命令可以接受零个或多个文件信息输入。倘若未找到文本文档,或者文本文档为-
,cut将加载标准输入。
传递给-f
,-b
和-c
选项的参数列表可以是整数金额额度,分号,一个区域地图整数金额额度,或者通过逗号分隔的好多个整数金额额度范围。每一个范围可以是以下之一。
N
第N个字段,字节或字符,从1慢慢开始。N-
于第N个字段,字节或字符到行尾。
N-M
于第N个第M个字段,字节或字符。-M
从第一个字段第M个字段,字节或字符。
裁切
在下面的案例中,我们在这里运用test.txt
文本文档作为例子。所有字段都由分隔符分隔。你能马上运行以下运用HereDoc和cat指令结合的辅助制作创建文件test.txt
。
cat > test.txt << EOF
245:789$(printf 't')4567$(printf 't')M:4540$(printf 't')Admin$(printf 't')01:10:1980
535:763$(printf 't')4987$(printf 't')M:3476$(printf 't')Sales$(printf 't')11:04:1978
EOF
cut test.txt -f 1,3
说明我们将运用的第一个和第三个字段。如果要说明于第1第4个字段,可以运行指令cut test.txt -f -4
。
那你现在早就尝试使用默认分隔符挑选字段的方式,那你也可以尝试一下运用别的分隔符的方式。例如以下案例中我们使用:
作为分隔符。
cut命令的-d
选项容许特定分隔符进行裁切。例如,需要使用:
作为分隔符说明第1和第3个字段。可以运行指令cut test.txt -d ':' -f 1,3
。
您可以使用一切独立字符作为分隔符。例如命令echo "Lorem ipsum dolor sit amet" | cut -d ' ' -f 2
运用空格符字符作为分隔符打印图片第二个字段。
你还可以使用--complement
选项仅打印出未使用-f
选项指定字段。例如命令cut test.txt -f 1,3 --complement
将打印出除第1和第3之外的所有字段。
默认情况cut的输出格式运用tab
分隔符进行分隔。要特定导出来分隔符,挑选--output-delimiter
选项。
cut test.txt -f 1,3 --output-delimiter='_'
命令将导出来分隔符设成_
。
还在持续之前,让我们差别字节和字符。一个字节是8位,可以说明256个不同的值。当ASCII标准建立时,它考虑了使用英语所需的所有字母,数字和标识。
ASCII字符表有128个字符,每一个字符由一个字节说明。当计算机慢慢在国际范围内流行时,科技公司慢慢为不同思维和语言超过256个字符的表述引入一个新的字符序号,不大可能进行一定的1对1投影。
这导致了比如共享文档或打开网页哪些的不一样难点,且需要能解决全球绝大多数书写系统的Unicode标准。
创建UTF-8便是为了解决这个问题。在UTF-8中,非是全部字符用到1个字节说明。字符可用1字节到4字节说明。
在以下案例中,大伙儿使用了占据2个字节的字符。运用
-b
/--bytes
选项特定字节位置来裁切一行的一部分。
echo 'drberspringen' | cut -b 5
命令选择第5个字节。echo 'drberspringen' | cut -b 5,9,13
命令选择第5个,第9个和第13个字节
echo 'drberspringen' | cut -b 1-5
命令选择从1到5字节的范围。
在撰写该文时,GNU coreutils中捆梆的cut版本信息并没按字符裁切的选项。运用-c
选项时,cut的举动及应用-b
选项时一样。
cut案例
cut命令一般通过管道与其他命令结合使用。这里有一些例子。
getent passwd | cut -d ':' -f1
命令得到所有用户的文件目录,将getent passwd
传送指令的输出作为cut
输入,运用:
作为分隔符打印出第一个字段。
history | cut -c8- | sort | uniq -c | sort -rn | head
命令查看10个常见命令,cut用于从history
命令导出每一行中消除前8个字节。
至今为止,您应该更好的了解如何使用Linux cut命令。虽然非常有帮助,但cut命令有一些限制。它兼容问题将好多个字符指定为分隔符。
