百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

linux也有砍一刀的功能,用命令cut砍掉文件多余内容

ahcoder 2025-01-14 10:28 21 浏览


简介

cut是一个命令行实用程序,用于从Linux系统中的每一行文件中删除部分。它将每个文件中选定的行部分打印到标准输出。
用户必须为cut命令指定字节、字符或字段的列表。因此,cut只在使用-b、-c或-f选项时有效。
可以通过以下的方式指定字节、字符或者字段列表:

N :N个字节、字符或者字段。从1开始。
N-M : N到M个字节、字符或者字段。
N- : 从第N个字节、字符或者字段开始。
-M :从第一个到第M个字节、字符或者字段。

示例

cut命令的语法格式:

$ cut OPTION... [FILE]...

1 使用cut命令只打印选择的字节

使用参数-b 或者 --bytes 选择需要的字节并打印到终端。
命令格式:

$ cut -b N file
或者
$ cut --bytes=N file

示例:

yunzhong@DESKTOP-9VB7LN7:/tmp/cutdir$ cat friutes.txt
apples
bananas
pears
mongos
orages
watermelon
hello world
hello again
yunzhong@DESKTOP-9VB7LN7:/tmp/cutdir$ cut -b 1 friutes.txt
a
b
p
m
o
w
h
h
yunzhong@DESKTOP-9VB7LN7:/tmp/cutdir$ cut -b 1,3,5 friutes.txt
ape
bnn
pas
mno
oae
wtr
hlo
hlo

2 使用cut命令选择连续范围内的字节

可以使用‘-’,选择连续范围内的字节。TAB和空格都被记为一个字节。
命令格式:

$ cut -b N-M file

示例:

yunzhong@DESKTOP-9VB7LN7:/tmp/cutdir$ cat friutes.txt
apples
bananas
pears
mongos
orages
watermelon
hello world
hello again
yunzhong@DESKTOP-9VB7LN7:/tmp/cutdir$ cut -b 6-9 friutes.txt
s
as

s
s
melo
 wor
 aga

当有多个文件需要操作时,cut命令可以让操作更加快捷:一次指定多个文件。

yunzhong@DESKTOP-9VB7LN7:/tmp/cutdir$ cut -b 1-5 friutes.txt test.txt
apple
banan
pears
mongo
orage
water
hello
hello
You h
Hello
print

3 打印选中的字符

类似于字节,我们可以使用-c 或者 --characters 参数,指定字符并打印出来。TAB和空格都记为一个字符。
命令格式:

$ cut -c N file
或者
$ cut --characters=N file

示例:

yunzhong@DESKTOP-9VB7LN7:/tmp/cutdir$ cut -c 1-5 test.txt
You h
Hello
print
遇?
yunzhong@DESKTOP-9VB7LN7:/tmp/cutdir$ cut -c 1-6 test.txt
You ha
Hello
print
遇到
yunzhong@DESKTOP-9VB7LN7:/tmp/cutdir$ cat test.txt
You have my attention!
Hello world.
print the world.
遇到中文怎么办?

从上面的例子可以看出,中文打印会出现乱码的情况,因为一个中文需要多个字节标识,对应到字符,也被认为是多个字符。

4 打印选择的字段

参数-f 或者 fields 可以指定字段。 这种方式还打印不包含分隔符的任何行。 分隔符是标记一行的开始和结束的字符。TAB是默认的字段分隔符。
命令格式:

$ cut -f N file
或者
$ cut --field N file

示例:

yunzhong@DESKTOP-9VB7LN7:/tmp/cutdir$ cut -f 1 test.txt
You have my attention!
Hello world.
print the world.
遇到中文怎么办?
yunzhong@DESKTOP-9VB7LN7:/tmp/cutdir$ cut --field 1 test.txt
You have my attention!
Hello world.
print the world.
遇到中文怎么办?

5 打印从第N个字节、字符或字段到结束

当打印字节时,命令格式:

$ cut -b N- file

当需要指定字符时,命令格式:

$ cut -c N- file

当需要指定字段时,命令格式:

$ cut -f N- file

示例:

yunzhong@DESKTOP-9VB7LN7:/tmp/cutdir$ cut -f 2- test.txt
You have my attention!
Hello world.
print the world.
遇到中文怎么办?
分割
yunzhong@DESKTOP-9VB7LN7:/tmp/cutdir$ cut -c 2- test.txt
ou have my attention!
ello world.
rint the world.
??到中文怎么办?
??行用TAB       分割
yunzhong@DESKTOP-9VB7LN7:/tmp/cutdir$ cut -b 2- test.txt
ou have my attention!
ello world.
rint the world.
??到中文怎么办?
??行用TAB       分割

6 打印前M个字符、字节或字段

按照不同的参数,都可以指定前M个:

$ cut -b -M file
$ cut -c -M file
$ cut -f -M file

示例

yunzhong@DESKTOP-9VB7LN7:/tmp/cutdir$ cat test.txt2
You     have    my      attention!
Hello   world.
print the       world.
yunzhong@DESKTOP-9VB7LN7:/tmp/cutdir$ cut -c -1 test.txt2
Y
H
p
yunzhong@DESKTOP-9VB7LN7:/tmp/cutdir$ cut -c -2 test.txt2
Yo
He
pr
yunzhong@DESKTOP-9VB7LN7:/tmp/cutdir$ cut -b -2 test.txt2
Yo
He
pr
yunzhong@DESKTOP-9VB7LN7:/tmp/cutdir$ cut -f -2 test.txt2
You     have
Hello   world.
print the       world.

7 使用不同的分隔符

默认情况下,cut命令使用TAB作为分隔符。参数-d 或者 --delimiter可以让用户指定分隔符。分隔符必须为一个字符。
命令格式:

$ cut -d DELIM -f N file
或者
$ cut --delimiter=DELIM -f N file

示例,使用空格作为分隔符需要通过''指定,其他的字符可以直接写:

yunzhong@DESKTOP-9VB7LN7:/tmp/cutdir$ cat friutes.txt
apples
bananas
pears
mongos
orages
watermelon
hello world
hello again
yunzhong@DESKTOP-9VB7LN7:/tmp/cutdir$ cut -d ' ' -f 2 friutes.txt
apples
bananas
pears
mongos
orages
watermelon
world
again
yunzhong@DESKTOP-9VB7LN7:/tmp/cutdir$ cut -d a -f 2 friutes.txt
pples
n
rs
mongos
ges
termelon
hello world
g

8 只打印带分隔符的行

默认情况下,如果一行不存在分隔符,这一行全部信息都会被打印出来。我们可以使用参数-s 或者 --only-delimited,让-f参数打印信息只包含哪些有分隔符的行。
命令格式:

$ cut -sf n file
或者
$ cut --only-delimited -f n file

示例:

yunzhong@DESKTOP-9VB7LN7:/tmp/cutdir$ cut -d : -f 2 test.txt
You     have    my      attention!
Hello   world.
print the       world.
遇到中文怎么办?
本行用TAB       分割
yunzhong@DESKTOP-9VB7LN7:/tmp/cutdir$ cut -d : -sf 2 test.txt
yunzhong@DESKTOP-9VB7LN7:/tmp/cutdir$

9 打印被筛掉的信息

--complement参数可以让我们打印被cut命令切掉的信息。
它可以配合参数-b, -c, 或者 -f使用。
命令格式:

$ cut --complement -b N file

示例:

yunzhong@DESKTOP-9VB7LN7:/tmp/cutdir$ cut -b -2 friutes.txt
ap
ba
pe
mo
or
wa
he
he
yunzhong@DESKTOP-9VB7LN7:/tmp/cutdir$ cut -b -2 --complement friutes.txt
ples
nanas
ars
ngos
ages
termelon
llo world
llo again

10 打印cut命令的版本

可以使用参数--version打印cut版本。
示例:

yunzhong@DESKTOP-9VB7LN7:/tmp/cutdir$ cut --version
cut (GNU coreutils) 8.30
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by David M. Ihnat, David MacKenzie, and Jim Meyering.

11 查看帮助信息

使用参数--help,查看cut命令的帮助信息,获得本文实例之外的用法。

cut --help

相关推荐

PC也能装MAX OS X

MACBOOK向来以其时尚的外观以及易用的OSX操作系统成为了时(zhuang)尚(bi)人士的最爱。但是其动不动就上万元的昂贵价格,也将一批立志时(zhuang)尚(bi)人士的拒之门外。但是最近...

一千多元的笔记本能买吗?英特尔11代+大屏幕,豆小谷值得选吗?

前言:有很多粉丝都问过本人,一千多元到底能买到什么样的笔记本?在此笔者只想说,这样的资金预算真的太低了!如果想买全新的,那大概率买的就是性能比较拉垮的上网本,比如搭载英特赛扬N系列、J系列处理器的轻薄...

首款配备骁龙X Elite处理器的Linux笔记本:采用KDE Plasma桌面环境

德国Linux硬件供应商TUXEDOComputers宣布正在开发一款配备高通骁龙XElite处理器(SnapdragonXEliteSoC)的ARM笔记本电脑,内部将该...

System76推出Gazelle Linux笔记本:配酷睿i9-13900H处理器

IT之家3月30日消息,主打Linux硬件的厂商System76于今天发布了新一代Gazelle笔记本电脑,共有15英寸和17英寸两个版本,将于3月30日接受预订,...

Kubuntu Focus Xe Gen 2笔记本发布,预装Linux系统

IT之家3月25日消息,KubuntuFocusXeGen2笔记本于近日发布,这是一款预装Kubuntu22.04LTSGNU/Linux发行版的轻薄本。上一代Kub...

这台Linux笔记本已用上英特尔12代酷睿,最高可选i7-1255U、卖1149美元起

Linux笔记本可能因为比较小众,一般都是拿Windows笔记本换个系统而来,硬件上也会落后同期Windows笔记本一两代,不过现在专门做Linux电脑的System76,推出了一款名为LemurP...

戴尔Inspiron 14 Plus骁龙笔记本迎新补丁,支持启动Linux

IT之家4月25日消息,科技媒体phoronix今天(4月25日)发布博文,报道称最新发布的Linux内核补丁,针对骁龙芯片的戴尔Inspiron14Plus笔记本,让其...

TUXEDO推出InfinityFlex 14二合一Linux笔记本,配i5-1335U

IT之家8月12日消息,Linux硬件企业TUXEDO当地时间本月2日推出了InfinityFlex14二合一Linux笔记本。该笔记本搭载2+8核的英特尔酷睿i5-...

登月探测器嫦娥使用什么操作系统,是Linux还是其它自主研发?

这是不是国家机密啊。事实什么样的不知道,但是从美国的探测器来看,就算不是也是相似的东西。下面我来说说我知道的。龙芯已经随北斗卫星上天了.就算登月探测器嫦娥是用"龙芯+Linux"也不出奇.没必要...

DNS分离解析实验

如果本文对你有帮助,欢迎关注、点赞、收藏、转发给朋友,让我有持续创作的动力目录一、分离解析概述二、实验需求三、实验步骤3.1双网卡服务器配置3.1.1添加两张网卡(内外网)3.1.2对两个网卡进...

一个小实验巩固下进程管理

先回顾下之前的三篇文章:Linux进程在内核眼中是什么样子的?Linux进程线程是如何创建的?Linux是如何调度进程的?通过这三篇文章的学习我们知道,无论内核进程还是用户进程,都是可以用task...

VMware Kali无线WIFI密码破解

WIFI破解前准备工作一张支持Kali系统监听的无线网卡VMware虚拟机安装好Kali系统(本实验用的是Kali2022版本)Kali系统下载、安装官方网站:https://www.kali.or...

python多进程编程

forkwindows中是没有fork函数的,一开始直接在Windows中测试,直接报错importosimporttimeret=os.fork()ifret==0:...

拔电源十台电脑藏后门!德国实验惊曝Windows致命漏洞

2025年4月15日,央视突然曝出一个超级大新闻!原来美国国家安全局通过黑龙江,往微软Windows系统里发送加密信息,激活了系统里藏着的后门程序,想破坏哈尔滨亚冬会!这消息一出来,大家才发现,竟然已...

深度探索RK3568嵌入式教学平台实战案例:设备驱动开发实验

一、产品简介TL3568-PlusTEB人工智能实验箱国产高性能处理器64位4核低功耗2.0GHz超高主频1T超高算力NPU兼容鸿蒙等国产操作系统二、实验目的1、熟悉基本字符设备的驱动程序...