014、cut命令
本文最后更新于 257 天前,其中的信息可能已经过时,如有错误请发送邮件到wuxianglongblog@163.com

cut命令

命令 cut 可以用来分割字符串,显示指定范围的内容,可以具体根据指定的字节范围、字符范围、分割字段范围来显示文本内容。还可以合并多个文件的内容。

范围表达式   说明
n-  从第 n 个字节、字符、字段到结尾
n-m 从第 n 个字节、字符、字段到第 m 个字节、字符、段,包括 n 和 m 在内
-m  从第 1 个字节、字符、字段到第 m 个字节、字符、字段

二、常用选项

选项  说明
-b  以字节为单位,显示行中指定字节范围的字符
-c  以字符为单位,显示行中指定字符范围的字符
-d  指定字段的分隔符,默认的字段分隔符为制表符“TAB”。字段分隔符必须加引号,单引号或者双引号都可以,分隔符与选项 -d 之间允许有空格
-f  显示指定字段的内容
-n  与 -b 选项连用,不分割多字节字符
--output-delimiter=<STRING>   指定输出的字段分隔符,分隔符和选项之间不允许有空格,分隔符可以不加引号,但是如果指定的分隔符是特殊符号必须加引号
--help  显示指令的帮助信息
--version   显示指令的版本信息
--complement    用来排除指定范围的字符内容,实际的效果与单词 complement 的含义不一致,只能认为老外的理解力逆天了!

三、命令示例
根据指定的字节范围显示指定文件中的内容
文件 text.txt 的内容如下:

[root@htlwk0001host test]# cat text.txt
hello shell world!
dfdskklllllf
dfsfdsf
shell world
sdffdsfdsfd
dfsfdfdsfds
fsdfdsfdsfdsf
fdsfdsfdsfd

显示文件 text.txt 内容中每行的第 1 个到第 8 个字节的内容:

[root@htlwk0001host test]# cut -b1-8 text.txt
hello sh
dfdskkll
dfsfdsf
shell wo
sdffdsfd
dfsfdfds
fsdfdsfd
fdsfdsfd

注:-b 表示以字节为单位,显示行中指定字节范围的字符
显示文件 text.txt 内容中每行第 1 个字节和第 8 个字节的字符:

[root@htlwk0001host test]# cut -b1,8 text.txt
hh
dl
d
so
sd
ds
fd
fd

指定字段分隔符,显示指定字段的内容
其实就是自定义分隔符,将每行文本内容进行分割,然后选取分割后的某些字段的内容进行显示。

[root@linuxcool ~]# cat student2.txt 
No;Name;Mark;Percent 
01;tom;69;91 
02;jack;71;87 
03;alex;68;98 

指定分号 ; 作为分隔符,显示第 2 个字段的内容:

[root@linuxcool ~]# cut -f2 -d";" student2.txt 
Name 
tom 
jack 
alex 

注:字段分隔符,可以不加引号,分隔符与选项 -d 之间允许有空格。
显示指定字段的内容
默认字段分隔符是制表符 TAB,所以文本内容每个字段已经使用 TAB 分割,可以直接使用选项 -f 显示指定字段的内容:

[root@linuxcool ~]# cat student.txt 
No Name Mark Percent 
01 tom   69   91 
02 jack  71   87 
03 alex  68   98  

使用 -f 选项显示第 2 个字段的内容:

[root@linuxcool ~]# cut -f 2 student.txt 
Name
tom 
jack
alex 

显示第 2 个和第 3 个字段的内容:

[root@localhost text]# cut -f2,3 test.txt
Name Mark
tom 69
jack 71
alex 68

根据指定的字符范围显示指定文件中的内容
文件 test.txt 的内容如下所示:

[root@linuxcool ~]# cat test.txt 
abcdefghijklmnopqrstuvwxyz 
abcdefghijklmnopqrstuvwxyz 
abcdefghijklmnopqrstuvwxyz 
abcdefghijklmnopqrstuvwxyz 
abcdefghijklmnopqrstuvwxyz

显示第 1 个字符到第 3 个字符的内容:

[root@linuxcool ~]# cut -c1-3 test.txt 
abc 
abc 
abc 
abc 
abc 

显示每行前 2 个字符的内容:

[root@linuxcool ~]# cut -c-2 test.txt 
ab 
ab 
ab 
ab 
ab 

显示从第 5 个字符开始到结尾的内容:

[root@linuxcool ~]# cut -c5- test.txt 
efghijklmnopqrstuvwxyz 
efghijklmnopqrstuvwxyz 
efghijklmnopqrstuvwxyz 
efghijklmnopqrstuvwxyz 
efghijklmnopqrstuvwxyz 

显示指定字段以外的字段的内容
可以使用选项 --complement 提取指定字段之外的列,即打印除了第二列之外的列的内容:

[root@linuxcool ~]# cut -f2 --complement student.txt 
No Mark Percent 
01  69   91 
02  71   87 
03  68   98 

以指定的输出分隔符来分割输出内容中的字段
可以使用选项 --output-delimiter 来指定输出内容时的字段分隔符,例如,指定符合 # 作为输出的字段分隔符,如下所示:

[root@htlwk0001host test]# cut -d';' -f2,4 --output-delimiter='#' text2.txt
Name#Percent 
tom#91 
jack#87 
alex#98 

说明:
-d';' 表示在输入的数据流中,以分号 ; 作为字段分隔符对每行的文本内容进行分割,而 --output-delimiter='#' 表示在输出内容的时候,以 #作为字段的分隔符显示内容。
合并多个文件的内容
把文件 f1 和 f2 的内容合并起来,然后通过覆盖输出重定向符 > 将合并后的内容放入文件 f3 中,命令如下:

[root@htlwk0001host test]# cut f1 f2 > f3
谨此笔记,记录过往。凭君阅览,如能收益,莫大奢望。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇