• 数据剪切命令cut和数据粘贴命令pastte


    在Windows中,经常从一个文件将一段文本移动到另一个文件中。在Linux中执行这个任务的是cut和paste命令。

    一、数据剪切命令cut

    • 命令格式:

    cut [option] [file]

    • 常用选项:

    b:表示要操作的对象是字节。

    c:表示要操作的对象是字符。

    f:表示要操作的对象是字段。

    d:指定字段分隔符,默认情况下是制表符Tab

    s:表示不包含没有字段分隔符的行,这个选项通常用于去掉注释 等。

    剪切范围表示方法如下:

    N:表示第N个字节、字符或字段。

    N-:表示从N到一行结束内的所有文本。

    N-M:表示从N到M之间的所有文本。

    -M:表示从开始到M之间的所有文本。

    -:从开始到结束的所有文本。

    除了上面的表示范围的方法以外,还可以像前面匹配行时一样,使用诸如“N,M”之类的表示方法。

    • 用法示例:

    使用cut剪切时,剪切的文本可以来自文件,也可以来自管道、其他命令的输出等。完成剪切后,cut与大多数文本操作命令一样,不会操作原有文件(即不改变原有文本的内容),而是直接将结果输出到标准输出。

    cut命令工作时,以行为单位剪切整个文本(即同样的剪切命令会对文本的每一行都生效)。

    (1)对已经计算好字节数或具备特殊格式的文本进行剪切时,使用选项b按字节剪切是比较方便的。

    例如要剪切所有学生的学号,学号具有特殊格式(每个学生的学号都是10个字节):

    [root@localhost test]# cut -b-10 students
    2821020225
    2821020115
    2721020321
    2921020632
    2721010409
    2921050313
    2721030227

    (2)剪切某个特殊字段的一部分字符,可以使用选项c。例如要剪切学生所在系和班级的代号:

    [root@localhost test]# cut -c5-8 students
    0202
    0201
    0203
    0206
    0104
    0503
    0302

    (3)使用选项f对多个字段进行剪切。例如要剪切出所有学生的学号、姓名和辅导员:

    [root@localhost test]# cut -f1-2,4 students_new 
    2821020225      Liulu   Lixia
    2821020115      Liumin  lixia
    2721020321      Xuli    Luolei
    2921020632      Xiayu   Hetao
    2721010409      Liwei   tangwei
    2921050313      Heli    Tangwei
    2721030227      Wangtao Huli

    1-2,4表示剪切第1、2、4个字段。

    (4)有时字段之间的分隔符不是制表符Tab,这时应该使用选项d指定新的字段分隔符。例如:

    [root@localhost test]# cut -d# -f1-3 student0
    2821020225#Liulu#Sichuan
    2821020115#Liumin#Henan
    2721020321#Xuli#Jiangsu
    2921020632#Xiayu#Shanxi
    2721010409#Liwei#Sichuan
    2921050313#Heli#Xizang
    2721030227#Wangtao#Yunnan

    一般情况下,都将cut命令的输出重定向到一个文件中,以便于执行粘贴操作。

    注意:在使用cut执行剪切操作时,无论是否需要,通常都将一行的标志性字段一起剪切(能唯一确定记录的字段),例如学号、序号等,以便于出问题时更容易查找。

    二、数据粘贴命令paste

    通常完成剪切之后,需要将剪切的内容粘贴到另一个文本中。这时就需要使用数据粘贴命令paste。

    • 命令格式:

    paste [option] [file…]

    • 常用选项:

    d:对新生成的文本指定新的字段分隔符,默认是制表符Tab。

    s:将粘贴的内容合并成行(即横向粘贴)。

    • 用法示例:
    [root@localhost test]# cat paste1
    2821020225
    2821020115
    2721020321
    2921020632
    2721010409
    2921050313
    2721030227
    [root@localhost test]# cat paste2
    Liulu
    Liumin
    Xuli
    Xiayu
    Liwei
    Heli
    Wangtao
    [root@localhost test]# cat paste3
    325
    280
    321
    334
    356
    259
    320

    (1)将学号和成绩粘贴在一起:

    [root@localhost test]# paste paste1 paste3
    2821020225      325
    2821020115      280
    2721020321      321
    2921020632      334
    2721010409      356
    2921050313      259
    2721030227      320

    (2)如果要按指定的顺序粘贴,可以按先后顺序依次输入相关文件。例如想要先粘贴成绩在粘贴姓名:

    [root@localhost test]# paste paste3 paste2
    325     Liulu
    280     Liumin
    321     Xuli
    334     Xiayu
    356     Liwei
    259     Heli
    320     Wangtao

    (3)还可以进行横向粘贴,这在一些特殊情况下很有用。例如将学生姓名及成绩进行横向粘贴:

    [root@localhost test]# paste -s paste2 paste3
    Liulu   Liumin  Xuli    Xiayu   Liwei   Heli    Wangtao
    325     280     321     334     356     259     320

    (4)使用paste进行粘贴时,使用的文件可以不止两个,即可以有多个文件同时进行粘贴。多个文件进行粘贴时,可以为每一个字段指定一个不同的分隔符。

    例如要将3个文件粘贴起来,第1、2个字段之间仍旧用制表符分割,而第2、3个字段之间用“#”分割:

    [root@localhost test]# paste -d'	#' paste1 paste2 paste3
    2821020225      Liulu#325
    2821020115      Liumin#280
    2721020321      Xuli#321
    2921020632      Xiayu#334
    2721010409      Liwei#356
    2921050313      Heli#259
    2721030227      Wangtao#320

    上面的命令中,paste在进行粘贴时,依次使用指定的域分隔符,对粘贴后的域进行分割。

    (5)处理来自管道的文本时,paste使用“-”代表来自管道的文本。例如要在文本paste1的每一行前面加上序号(序号已经保存在文件ps中):

    [root@localhost test]# cat ps
    1
    2
    3
    4
    5
    6
    7
    [root@localhost test]# cat paste1 | paste -d"#" ps -
    1#2821020225
    2#2821020115
    3#2721020321
    4#2921020632
    5#2721010409
    6#2921050313
    7#2721030227

    注意:在一些版本中,cut和paste这两个命令会严格按字段分隔符对字段进行划分。例如当有空格在制表符前后时,空格也会被当作一个字段。因此在剪切和粘贴的过程中应该反复尝试,直到输出正确后再重定向到文件中。

  • 相关阅读:
    Linux学习笔记(6)磁盘分区(LVM)
    Linux学习笔记(5)磁盘分区(parted)
    sql server升级打补丁
    sql server中index的REBUILD和REORGANIZE的区别及工作方式
    【sql server邮件】sql server如何把查询结果发邮件出去
    学习系列
    EasySQLMAIL使用实践系列
    利用EasySQLMAIL实现自动填写Excel表格并发送邮件(2)
    需求分析Point
    实现Word的列表样式
  • 原文地址:https://www.cnblogs.com/nufangrensheng/p/3464347.html
Copyright © 2020-2023  润新知