2025年【转帖】Linux Cut 命令 与 Paste命令&Join命令&tr命令

【转帖】Linux Cut 命令 与 Paste命令&Join命令&tr命令Cut 命令 主要用来提取各种各样的数据 cut cchars file 如 c5 提取第 5 个字符 c5 提取第 5 个字符以后的字符 c1 5 12 提取多个字符 中间用 符号隔开 c5 14 提取第 5 个字符到第 14 个字符间的字符 http gan cublog cn service dsg tmp cat f

大家好,我是讯享网,很高兴认识大家。

Cut命令 ,主要用来提取各种各样的数据。

cut -cchars file
如:
    -c5     提取第5个字符
        -c5-    提取第5个字符以后的字符
        -c1,5,12  提取多个字符,中间用“,”符号隔开
        -c5-14  提取第5个字符到第14个字符间的字符
http://gan.cublog.cn
[service@dsg tmp]$ cat f.txt
service  pts/0        Oct  9 20:27 (211.95.114.235)
service  pts/1        Oct  9 21:06 (218.80.203.242)
service  pts/2        Oct  9 14:35 (218.80.203.242)
service  pts/3        Oct  9 21:07 (218.80.213.242)
service  pts/4        Oct  9 21:07 (218.80.213.242)
service  pts/5        Oct  9 21:45 (58.31.205.19)
[service@dsg tmp]$ cut -c5 f.txt
i
i
i
i
i
i
[service@dsg tmp]$ cut -c5- f.txt   
ice  pts/0        Oct  9 20:27 (211.95.114.235)
ice  pts/1        Oct  9 21:06 (218.80.203.242)
ice  pts/2        Oct  9 14:35 (218.80.203.242)
ice  pts/3        Oct  9 21:07 (218.80.213.242)
ice  pts/4        Oct  9 21:07 (218.80.213.242)
ice  pts/5        Oct  9 21:45 (58.31.205.19)
[service@dsg tmp]$ cut -c1,5,14 f.txt
si0
si1
si2
si3
si4
si5

------------------------------
cut -d -f
 -d, --delimiter=DELIM
              use DELIM instead of TAB for field delimiter

 -f, --fields=LIST
              output only these fields;  also print any line that contains  no
              delimiter character, unless the -s option is specified

-d -f 主要用来从某中分隔符中提取数据
如:
[service@dsg tmp]$ cat f.txt
service1:pts/0:Oct  9 20:27: (211.95.114.235)
service2:pts/1:Oct  9 21:06: (218.80.203.242)
service3:pts/2:Oct  9 14:35: (218.80.203.242)
service4:pts/3:Oct  9 21:07: (218.80.213.242)
service5:pts/4:Oct  9 21:07: (218.80.213.242)
service6:pts/5:Oct  9 21:45: (58.31.205.19)
[service@dsg tmp]$ cut -d: -f1 f.txt
service1
service2
service3
service4
service5
service6
[service@dsg tmp]$ cut -d: -f2 f.txt
pts/0
pts/1
pts/2
pts/3
pts/4
pts/5
[service@dsg tmp]$ cut -d: -f3 f.txt
Oct  9 20
Oct  9 21
Oct  9 14
Oct  9 21
Oct  9 21
Oct  9 21
[service@dsg tmp]$ cut -d: -f5 f.txt
 (211.95.114.235)
 (218.80.203.242)
 (218.80.203.242)
 (218.80.213.242)
 (218.80.213.242)
 (58.31.205.19)
[service@dsg tmp]$ cut -d: -f9 f.txt





[service@dsg tmp]$ cut -d: -f1,4 f.txt  #提取1和4列数据
service1:27
service2:06
service3:35
service4:07
service5:07
service6:45

Given that the fields are separated by tabs, you should use the -f option to cut instead:

如果文件使用tab键隔开就直接使用-f就可以了,-d的默认分隔符号就为tab键。
#
 任务:
 将日志中所有形如下的数据中大小为6141的行作处理,提取_1.jpg的前8位后列表
  -rw-r--r--    1 root     root         6141 Sep  8 10:39  /data1/mypic/temp/_1.jpg
  (1)提取数据行
  tail - /tmp/temp_move_video_images.log|grep " root "|grep " 6141 "
  (2)提取 /data1/mypic/temp/_1.jpg部分
 tail - /tmp/temp_move_video_images.log|grep " root "|grep " 6141 "|awk '{print $9}'
 (3)提取_1.jpg部分
 tail - /tmp/temp_move_video_images.log|grep " root "|grep " 6141 "|awk '{print $9}'|awk -F/ '{print $5}'
 (4)提取
 tail - /tmp/temp_move_video_images.log|grep " root "|grep " 6141 "|awk '{print $9}'|awk -F/ '{print $5}'|awk -F_ '{print $1}' |cut -c1-8
 (5)排去重复项
 tail - /tmp/temp_move_video_images.log|grep " root "|grep " 6141 "|awk '{print $9}'|awk -F/ '{print $5}'|awk -F_ '{print $1}' |cut -c1-8|awk '{count[$1]++}END{for(name in count)print name,count[name] }' |awk '{print $1}'

 

Paste命令:

 

cut用来从文本文件或标准输出中抽取数据列或者域,然后再用paste可以将这些数据粘贴起来形成相关文件。

粘贴两个不同来源的数据时,首先需将其分类,并确保两个文件行数相同。paste将按行将不同文件行信息放在一行。缺省情况下, paste连接时,用空格或tab键分隔新行中不同文本,除非指定-d选项,它将成为域分隔符。

功能说明:合并文件的列。

语  法:paste [-s][-d <间隔字符>][--help][--version][文件...]

补充说明:paste指令会把每个文件以列对列的方式,一列列地加以合并。

参  数:
 -d<间隔字符>或--delimiters=<间隔字符>  用指定的间隔字符取代跳格字符。
 -s或--serial  串列进行而非平行处理。
 --help  在线帮助。
 --version  显示帮助信息。


讯享网

使用事例:
$ cat names
Tony
Emanuel
Lucy
Ralph
Fred
gan.cublog.cn
$ cat numbers
(307) 555-5356
(212) 555-3456
(212) 555-9959
(212) 555-7741
(212) 555-0040

$ paste names numbers   将两个文件合并,他们中间用tab键分隔开
Tony    (307) 555-5356
Emanuel (212) 555-3456
Lucy    (212) 555-9959
Ralph   (212) 555-7741
Fred    (212) 555-0040
gan.cublog.cn
$ cat addresses
55-23 Vine Street, Miami
39 University Place, New York
17 E. 25th Street, New York
38 Chauncey St., Bensonhurst
17 E. 25th Street, New York
gan.cublog.cn
$ paste names addresses numbers
Tony    55-23 Vine Street, Miami       (307) 555-5356
Emanuel 39 University Place, New York (212) 555-3456
Lucy    17 E. 25th Street, New York    (212) 555-9959
Ralph   38 Chauncey St., Bensonhurst   (212) 555-7741
Fred   17 E. 25th Street, New York     (212) 555-0040

$ paste -d'+' names addresses numbers   他们中间用指定的'+'符号隔开
Tony+55-23 Vine Street, Miami+(307) 555-5356
Emanuel+39 University Place, New York+(212) 555-3456
Lucy+17 E. 25th Street, New York+(212) 555-9959
Ralph+38 Chauncey St., Bensonhurst+(212) 555-7741
Fred+17 E. 25th Street, New York+(212) 555-0040

 

1 paste的拼凑原理是什么?

这个很简单,和cut的原理几乎一样,就是将几个文件的相应行用制表符连接起来,并输出到标准输出。

paste最简单的使用方法是:

[rocrocket@rocrocket programming]$ cat p1.txt

1 2 3 [ rocrocket@ rocrocket programming] $ cat p2.txt a b c [ rocrocket@ rocrocket programming] $ paste p1.txt p2.txt 1     a 2     b 3     c [ rocrocket@ rocrocket programming] $ paste p1.txt p2.txt|sed -n l 1 /ta$ 2 /tb$ 3 /tc$

讯享网
小讯
上一篇 2025-01-10 16:07
下一篇 2025-03-07 11:52

相关推荐

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