shell文字过滤程序(十):cut命令

shell文字过滤程序(十):cut命令

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

【版权声明:转载请保留源:blog.csdn.net/gentleliu。Mail:shallnew at 163 dot com】

cut指挥类似至awk,从行内提取的信息,它是一个较弱的版本的功能awk。

cut命令格式为:cut [options] filename

当中options有:

-d  指定与空格和t a b键不同的域分隔符。类似于awk的“-F”。

-f field  指定剪切域数

-c list  指定剪切字符数。

首先我们来处理按:切割的password文件:

# cat passwd
root:x:0:0:root:/root:/bin/sh
proxy:x:13:13:proxy:/bin:/bin/sh
operator:x:37:37:Operator:/var:/bin/sh
ftp:x:83:83:ftp:/home/ftp:/bin/sh
nobody:x:99:99:nobody:/home:/bin/sh
sshd:x:103:99:Operator:/var:/bin/sh

按:切割,然后取第一列和第六列,-f能够指定获取的域数:

# cut -d: -f1,6 passwd
root:/root
proxy:/bin
operator:/var
ftp:/home/ftp
nobody:/home
sshd:/var

指定域数还能够这样写:

# cut -d: -f 1-4,6 passwd
root:x:0:0:/root
proxy:x:13:13:/bin
operator:x:37:37:/var
ftp:x:83:83:/home/ftp
nobody:x:99:99:/home
sshd:x:103:99:/var

awk的实现为:

# awk -F: 'BEGIN{OFS=":"}{print $1,$2,$3,$4,$6}' passwd    
root:x:0:0:/root
proxy:x:13:13:/bin
operator:x:37:37:/var
ftp:x:83:83:/home/ftp
nobody:x:99:99:/home
sshd:x:103:99:/var

可是假设要指定多个字符来切割的话,cut就不行了。cut仅仅支持单个分隔字符,二awk支持多个。

比方我们以“bin”分分隔:

# awk -F"bin" 'BEGIN{OFS=":"}{print $1}' passwd
root:x:0:0:root:/root:/
proxy:x:13:13:proxy:/
operator:x:37:37:Operator:/var:/
ftp:x:83:83:ftp:/home/ftp:/
nobody:x:99:99:nobody:/home:/
sshd:x:103:99:Operator:/var:/

使用cut:

# cut -d"bin" -f1 passwd                                      
cut: the delimiter must be a single character
Try 'cut --help' for more information.

这里能够看见cut命令的功能非常有限。

cut默认以tab键来切割,awk默认以空格或多个空格或tab键来切割:

# sed 's/:/\t/g' passwd | cut -f5
root
proxy
Operator
ftp
nobody
Operator
# sed 's/:/\t/g' passwd | awk '{print $5}'
root
proxy
Operator
ftp
nobody
Operator

cut能够剪切第随意字符。看似功能强大,但非常少有使用价值。

使用- c选项指定精确剪切数目。这样的方法需确切知道開始及结束字符。

通常不用这样的方法,除非在固定长度的域或文件名称上。
来看几个样例即可了:

# cut -c1,2,4 passwd
rot
prx
opr
ft:
noo
ssd
# cut -c5-9 passwd       
:x:0:
y:x:1
ator:
x:83:
dy:x:
:x:10

版权声明:本文博主原创文章。博客,未经同意不得转载。假设你认为你的实际物品,请点击以下“最佳”。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/116773.html原文链接:https://javaforall.net

(0)
上一篇 2022年1月15日 下午7:00
下一篇 2022年1月15日 下午9:00


相关推荐

  • prototype.js「建议收藏」

    prototype.js「建议收藏」prototype.js是一个非常优雅的javascript基础类库,对javascript做了大量的扩展,而且很好的支持Ajax,国外有多个基于此类库实现的效果库,也做得很棒。官方网站:http://www.prototypejs.org/中文API参考:https://compdoc2cn.dev.java.net/prototype/html/prototype.js.cn.html

    2022年7月23日
    9
  • 应对安全风险 奇安信推出“龙虾安全伴侣”系列成果

    应对安全风险 奇安信推出“龙虾安全伴侣”系列成果

    2026年3月17日
    2
  • 数据结构:八种数据结构大全

    数据结构:八种数据结构大全数据结构 1 1 数据结构概述数据结构是计算机存储 组织数据的方式 通常情况下 精心选择的数据结构可以带来更高的运行或者存储效率 数据结构的优良将直接影响着我们程序的性能 常用的数据结构有 数组 Array 栈 Stack 队列 Queue 链表 LinkedList 树 Tree 图 Graph 堆 Heap 散列表 Hash 等 1 2 数据结构的分类 1 2 1 排列方式 1 集合集合 数据结构中的元素之间除了 同属一个集合 的相互关系外 别无其他关系 2 线性结构线性

    2026年3月18日
    2
  • AI+绘画入门教程:基于 ChatGLM 的文生图与伪代码实现 – 教程

    AI+绘画入门教程:基于 ChatGLM 的文生图与伪代码实现 – 教程

    2026年3月12日
    3
  • Verdi简介

    Verdi简介3 1 1Verdi 的历史相信做 IC 验证的朋友或多或少都使用过 VCS 和 Verdi 这两个工具 这两个工具目前都属于 synopsys 公司 但是 Verdi 的来源可谓一路坎坷 Verdi 最开始是由 novas 公司设计的 在 2008 年 被台湾的 EDA 厂家 springsoft 源笙 收购了 我我最早使用 Verdi 的时候 是上海源笙提供培训 在 2012 年 synopsys 收购了 springsoft 公司 所以此时 Verdi 才正式属于 synopsys 联想一下 我们使用 Verdi 的时候会产生 novas rc 和 nov

    2026年3月17日
    2
  • ftp 出现Passive mode refused 解决办法

    ftp 出现Passive mode refused 解决办法在 shell 中调用 FTP 出现下面错误时 Permission nbsp denied Passive nbsp mode nbsp refused Permission nbsp denied Passive nbsp mode nbsp refused 请在链接 FTP 后加入 passive 即可 主要原因是 FTP 主动模式造成的 一般 FTP 默认为被动模式 我在做备份是由于防火墙的原因 我把 VSFTP 改为主动模式 这样就发现了一个问题 直接用

    2026年3月8日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号