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

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

nanshan 2024-12-26 15:43 13 浏览 0 评论


简介

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

相关推荐

雷军1994年写的老代码曝光,被称像诗一样优雅

大数据文摘授权转载自程序员的那些事雷军的代码像诗一样优雅↓↓↓有些网友在评论中质疑,说雷军代码不会是“屎”一样优雅吧。说这话的网友,也许是开玩笑的,也许是真没看过雷军写过的代码。在2011年的时候,我...

原创经验分享:低级bug耗费12小时Fix

调试某程序非常简单的程序,简单到认为不可能存在缺陷,但该BUG处理时间超过12小时:程序属于后台进程,监控系统每隔15秒检查外设IO状态,IO异常后发出报警或复位外设,外设都在linux下有/sys/...

SpringBoot实现的简单停车位管理系统附带导入和演示教程视频

这一次为大家带来的是简单的停车位管理系统,基于SpringBoot+Thymeleaf+Mybatis框架,这个系统相对来说比较简单,很容易学习并快速上手,因为逻辑很清晰,没有太复杂的代码逻辑,所以学...

一个开箱即用的代码生成器(代码自动生成工具开源)

今天给大家推荐一个好用的代码生成器,名为renren-generator,该项目附带前端页面,可以很方便的选择我们所需要生成代码的表。首先我们通过git工具克隆下来代码(地址见文末),导入idea。...

【免费开源】JeecgBoot单点登录源码全部开源了

JeecgBoot单点登录源码全部开源了,有需要的朋友可以来薅羊毛了。一、JeecgBoot介绍JeecgBoot是一款企业级的低代码平台!前后端分离架构SpringBoot2.x,SpringCl...

SpringBoot+JWT+Shiro+Mybatis实现Restful快速开发后端脚手架

作者:lywJee来源:cnblogs.com/lywJ/p/11252064.html一、背景前后端分离已经成为互联网项目开发标准,它会为以后的大型分布式架构打下基础。SpringBoot使编码配置...

为什么越来越多的人选择使用idea软件

IDEA软件是什么?IDEA软件是干什么的?为什么越来越多的人选择使用IDEA软件?IDEA软件,全称IntelliJIDEA,它是由JetBrains公司开发开发的一款功能强大的集成开发环境(ID...

开题报告大学生互助系统(附源码)java毕设

本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容选题背景随着互联网技术的飞速发展,大学生群体对信息共享与互助的需求日益增长。关于大...

SpringBoot项目快速开发框架JeecgBoot——项目简介及系统架构!

项目简介及系统架构JeecgBoot是一款基于SpringBoot的开发平台,它采用前后端分离架构,集成的框架有SpringBoot2.x、SpringCloud、AntDesignof...

新手配电脑13代CPU怎么选择(新手配电脑13代cpu怎么选择好)

Intel第13代酷睿i3、i5、i7、i9系列处理器的核心参数、性能差异及适用群体的详细说明(以桌面端为例):一、13代酷睿全系参数对比(桌面端主流型号)参数i3-13100i5-13600Ki7-...

加速 SpringBoot 应用开发,官方热部署神器真带劲

平时使用SpringBoot开发应用时,修改代码后需要重新启动才能生效。如果你的应用足够大的话,启动可能需要好几分钟。有没有什么办法可以加速启动过程,让我们开发应用代码更高效呢?今天给大家推荐一款Sp...

基于微信小程序的移动端物流系统-计算机毕业设计源码+LW文档

摘要随着Internet的发展,人们的日常生活已经离不开网络。未来人们的生活与工作将变得越来越数字化,网络化和电子化。网上管理,它将是直接管理移动端物流系统app的最新形式。本论文是以构建移动端物流系...

springboot教务管理系统+微信小程序云开发附带源码

今天给大家分享的程序是基于springboot的管理,前端是小程序,系统非常的nice,不管是学习还是毕设都非常的靠谱。本系统主要分为pc端后台管理和微信小程序端,pc端有三个角色:管理员、学生、教师...

SpringBoot全家桶:23篇博客加23个可运行项目让你对它了如指掌

SpringBoot现在已经成为Java开发领域的一颗璀璨明珠,它本身是包容万象的,可以跟各种技术集成。本项目对目前Web开发中常用的各个技术,通过和SpringBoot的集成,并且对各种技术通...

Maven+JSP+Servlet+C3P0+Mysql实现的音乐库管理系统

本系统基于Maven+JSP+Servlet+C3P0+Mysql实现的音乐库管理系统。简单实现了充值、购买歌曲、poi数据导入导出、歌曲上传下载、歌曲播放、用户注册登录注销等功能。难度等级:简单技术...

取消回复欢迎 发表评论: