11 2 1 Shell编程 字符截取命令 cut命令
目录:
Linux和Unix系统中有许多实用程序,可让您处理和过滤文本文件。 剪切是一种命令行实用程序,可让您从指定的文件或管道数据中剪切部分行,并将结果打印到标准输出中。 它可用于通过定界符,字节位置和字符来剪切行的一部分。
在本教程中,我们将通过实际示例和最常见的cut选项的详细说明,向您展示如何使用Linux cut命令。
如何使用剪切命令
cut命令的语法如下:
cut OPTION……
使用cut命令时,必须使用以下选项之一,并且只能使用其中之一:
-
-f(----fields=LIST)-通过指定一个字段,一组字段或一系列字段进行选择。 这是最常用的选项。-b(----bytes=LIST)-通过指定一个字节,一组字节或字节范围进行选择。-c(--characters--characters=LIST)-通过指定一个字符,一组字符或一系列字符进行选择。
其他选项是:
-
-d(--delimiter)-指定将使用的定界符,而不是默认的“ TAB”定界符。--complement补充选择。 使用此选项时,剪切将显示除所选内容外的所有字节,字符或字段。-s(----only-delimited)-默认情况下,cut将打印不包含定界符的任何行。 使用此选项时,剪切将不会打印不包含定界符的行。--output-delimiter默认为将输入定界符用作输出定界符。 此选项使您可以指定其他输出定界符字符串。
cut命令可以接受零个或多个输入FILE名称。 如果未指定FILE或FILE为
-
,则cut将读取标准输入。
传递给
-f
,
-b
和
-c
选项的LIST参数可以是整数,以逗号分隔的多个整数,一个整数范围或以逗号分隔的多个整数范围。 每个范围可以是以下之一:
-
N第N个字段,字节或字符,从1开始N-从第N个字段,字节或字符到行尾。 从第N到第M的NM,字段或字符。-M从第一个到第M个字段,字节或字符。
如何按领域切割
剪切命令通常用于显示文件的每一行或标准输入中的选定字段。 未指定时,默认定界符为“ TAB”。
在下面的示例中,我们将使用以下文件。 所有字段都用制表符分隔。
test.txt
245:789 4567 M:4540 Admin 01:10:1980 535:763 4987 M:3476 Sales 11:04:1978
要显示第一和第三字段,请使用:
cut test.txt -f 1, 3
245:789 M:4540 535:763 M:3476
或者,如果您要显示从第一到第四字段:
cut test.txt -f -4
245:789 4567 M:4540 Admin 535:763 4987 M:3476 Sales
如何根据定界符进行切割
要基于定界符进行剪切,请使用
-d
选项,后跟要使用的定界符。
例如,要使用“:”作为分隔符来显示第一个字段和第三个字段,请输入:
cut test.txt -d ':' -f 1, 3
245:4540 Admin 01 535:3476 Sales 11
您可以使用任何单个字符作为分隔符。 在下面的示例中,我们使用空格字符作为分隔符并打印第二个字段:
echo "Lorem ipsum dolor sit amet" | cut -d ' ' -f 2
如何补充选择
要补充选择字段列表,请使用
--complement
选项。 这将仅打印未使用
-f
选项选择的字段。
以下命令将打印除第一个和第三个以外的所有字段:
cut test.txt -f 1, 3 --complement
4567 Admin 01:10:1980 4987 Sales 11:04:1978
如何指定输出定界符
要指定输出定界符,请使用
--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 'drüberspringen' | cut -b 5
b
选择第5、9和13个字节:
echo 'drüberspringen' | cut -b 5, 9, 13
bpg
选择范围从第1到第5个字节:
echo 'drüberspringen' | cut -b 1-5
drüb
在撰写本文时,GNU coreutils中捆绑的cut版本没有按字符剪切的选项。 使用
-c
选项时,cut的行为与使用
-b
选项时的行为相同。
切例
cut命令通常与通过管道的其他命令结合使用。 这里有一些例子。
获取所有用户的列表
getent passwd
命令的输出传递到
cut
,
cut
将使用
:
作为定界符打印第一个字段。
getent passwd | cut -d ':' -f1
查看10个最常用的命令
在以下示例中,cut用于从
history
命令输出的每一行中剥离前8个字节。
history | cut -c8- | sort | uniq -c | sort -rn | head
结论
到目前为止,您应该对如何使用Linux cut命令有一个很好的了解。 尽管非常有用,但是cut命令有一些限制。 它不支持指定多个字符作为分隔符,也不支持多个分米。
切断端子分析师在MID市场中预测Win for Linux
分析人士表示,Linux有很大机会主导移动互联网设备类别。有一些分析师表示,在本周发布的一份报告中,ABI Research表示,Linux操作系统似乎有望占据大部分移动互联网设备的市场份额,一部手机但比笔记本电脑小一些
Linux.com获得改造
Linux基金会正在恢复linux.com域上的原创内容
SUSE Linux Enterprise 11发布
Novell Linux操作系统更新增加了与Windows







