常用选项

cut常用的选项:

  • -b,-bytes = list
    使用此选项指定的字节列表剪切输入文件
  • -c,-characters = list
    使用此选项指定的字符列表剪切输入文件
  • -f,-fields = list
    使用字段列表剪切输入文件。要使用的默认字段选项卡。可以使用-d选项覆盖默认行为。
  • -d,-delimiter = delimiter
    使用用作字段的分隔符。如前所述,默认字段是选项卡,此选项覆盖此默认行为。

例子

Linux cut命令示例

free | grep Mem | sed 's/\s+/,/g' | cut -d , -f2显示当前系统上的总内存
cat /proc/cpuinfo | grep "name" | cut -d : -f2 | uniq检索CPU类型
wget -q -O X http://ipchicken.com/grep '^ {8}[0-9]' X | sed 's/\s+/,/g' | cut -d , -f2检索外部IP地址
cut -d : -f 1 /etc/passwd提取当前系统上的用户列表
ifconfig eth0 | grep HWaddr | cut -d " " -f 11获取网络接口的MAC地址
who | cut -d \s -f1列出登录到当前系统的用户
grep -w <n> /etc/services | cut -f 1 | uniq查看使用端口n的服务

使用列表

在这种情况下,列表可以由单个或者一系列字节、字符或者字段组成。例如,要仅显示第二个字节,列表将包含一个数字2。
因此:

  • 2将仅显示从1的第二个字节,字符或者字段
  • 2-5将显示从秒开始的所有字节,字符或者字段,并完成5th
  • -3将在第4之前显示所有字节,字符或者字段
  • 5-将生成以5th开始的所有字节,字符或者字段
  • 1,3,6将仅显示1,第3和第6字节,字符或者字段
  • 1,3-以第3个显示第一和所有字节,字符或者字段

按字符裁剪

我们使用cut的-c选项只打印cut.txt文件中特定范围的字符。

echo cut-command > cut.txt 
$cut -c 2 cut.txt 
u
$cut -c -3 cut.txt
cut
$cut -c 2-5 cut.txt
ut-c
$cut -c 5- cut.txt
command

按字节裁剪

我们知道单个字符的大小为1字节,因此使用-b选项执行之前的命令后的结果将完全相同:

$cut -b 2 cut.txt
u
$cut -b -3 cut.txt
cut
$cut -b 2-5 cut.txt
ut-c
$cut -b 5- cut.txt
command

cut.txt是一个简单的ASCII文本文件。
只有在使用多字节编码文件比如UTF-8 Unicode文本时,才会出现差异。
例如:

$echo Ľuboš > cut.txt
$file cut.txt 
cut.txt: UTF-8 Unicode text
$cut -b 1-3 cut.txt 
Ľu
$cut -c 1-3 cut.txt 
Ľub

按照字段裁剪

如前所述,“cut”命令使用的默认字段是TAB制表符。例如,让我们创建一个分隔符为TAB的文件。
提示:若要在命令行中插入制表符,请在单击制表符之前使用^V(CTRL+V)

$echo "1        2       3" > cut.txt 
$echo "4        5       6" >> cut.txt 
$cat cut.txt 
1       2       3
4       5       6
$cut -f2- cut.txt 
2       3
5       6

上面的示例只打印了第2列和第3列,因为通用分隔符是TAB,而TAB被cut用作默认字段。
要确保使用TAB制表符而不是空格, 使用od命令,请执行以下操作:

$echo "1        2" > tab.txt
$echo "1        2" > space.txt
$od -a tab.txt 
0000000   1  ht   2  nl
0000004
$od -a space.txt 
0000000   1  sp  sp  sp  sp  sp  sp  sp  sp   2  nl
0000013

如果我们需要覆盖默认行为并指示cut命令使用不同的分隔符,-d选项将非常方便。

$echo 1-2-3-4 > cut.txt 
$echo 5-6-7-8 >> cut.txt 
$cat cut.txt 
1-2-3-4
5-6-7-8
$cut -d - -f-2,4 cut.txt 
1-2-4
5-6-8

我们需要使用-d选项的经典示例是:
从/etc/passwd文件中提取用户列表:

$cut -d : -f 1 /etc/passwd
root
daemon
bin
sys
sync
games
man
lp
mail
news
uucp
proxy
www-data
...

使用complement排除数据

CUT命令允许我们在其输出中有选择地包含所需的数据。
如果我们需要选择要从输出中排除的数据,则complement选项可能会非常方便。

例如:

$echo 12345678 > cut.txt 
$cat cut.txt 
12345678
$cut --complement -c -2,4,6- cut.txt 
35
Linux cut命令
日期:2020-07-07 20:56:45 来源:oir作者:oir