Linux操作命令(七)

该节主要讲解cut,paste,tr 命令。

这里对linux常用的命令进行整理,以便日后查看。
–来自实验楼。

##cut命令
cut命令是一个将文本按列进行切分的小工具,它可以指定分隔每列的定界符。

如果一行数据包含多个字段(多列),现在想要提取其中的一列或多列,这是cut命令就可以大显身手了。

###命令格式:
cut [选项] [文件名]

###常用参数:

  • -b 以字节为单位进行分割
  • -c 以字符为单位进行分割
  • -d 自定义分隔符,默认为制表符
  • -f 自定义字段
  • –complement 抽取整个文本行,除了那些由 -c 或 -f 选项指定的文本

###常用范例:
例一:取出student.txt文件中的第一列和第三列,可以使用如下命令:

cut -f 1,3 -d ‘ ’ student.txt

img

例二:取出student.txt文件中的第一列,可以使用如下命令:

cut -f 1 -d ‘ ’ student.txt

例三:取出student.txt文件中的前三列,可以使用如下命令:

cut -f 1-3 -d ‘ ’ student.txt

img

例四:取出student.txt文件中除第一列的其他列,可以使用如下命令:

cut -f 1 -d ‘ ’ student.txt --complement    

img

例五:给任意一字符串str,取出其最后一个字符,可以使用如下命令:

num=$(echo -n $str | wc -c)
echo -n $str | cut -b $num 
或者
echo -n $str | cut -b `echo -n $str | wc -c`

img

##paste命令
paste 命令的功能正好与 cut 相反。它会添加一个或多个文本列到文件中,而不是从文件中抽取文本列。它通过读取多个文件,然后把每个文件中的字段整合成单个文本流,输入到标准输出。

###命令格式:
paste [选项] [文件名]

###常用参数:

  • -s 将每个文件合并成行而不是按行粘贴
  • -d 自定义分隔符,默认为制表符

###常用范例:
例一:将student.txt和telphone.txt文件中的内容按列拼接,可以使用如下命令:

paste student.txt telphone.txt

img

例二:将student.txt和telphone.txt文件中的内容按列拼接,指定分隔符为’:’,可以使用如下命令:

paste student.txt telphone.txt -d ‘:’

img

例三:将student.txt和telphone.txt文件中的内容各自拼接成一行,可以使用如下命令:

paste -s student.txt telphone.txt

img

##tr命令
tr命令常被用来更改字符。我们可以把它看作是一种基于字符的查找和替换操作。换字是一种把字符从一个字母转换为另一个字母的过程。tr从标准输入中替换、缩减和/或删除字符,并将结果写到标准输出。

tr只能通过stdin(标准输入),而无法通过命令行参数来接受输入。

tr是translate(转换)的缩写。

###命令格式:
tr [选项] SET1 SET2

将来自stdin的输入字符从SET1映射到SET2,并将其输出写入stdout(标准输出)。SET1和SET2是字符类或字符集。如果两个字符集的长度不相等,那么SET2会不断重复其最后一个字符,直到长度与SET1相同。如果SET2的长度大于SET1,那么在SET2中超出SET1的那部分字符则全部被忽略。

###常用参数:

  • -d 删除匹配SET1的内容,并不作替换

###常用范例:
例一:将输入的字符大写转换为小写,可以使用如下命令:

echo ‘THIS IS SHIYANLOU!’ | tr ‘A-Z’ ‘a-z’

例二:将输入的字符中的数字删除,可以使用如下命令:

echo ‘THIS 123 IS S1HIY5ANLOU!’ | tr -d ‘0-9’ 

例三:tr 命令的一个有趣的用法是执行 ROT13 文本编码。ROT13 是一款微不足道的基于一种简易的替换暗码的加密类型。把 ROT13 称为“加密”是大方的,“文本模糊处理”更准确些。有时候它被用来隐藏文本中潜在的攻击内容。这个方法就是简单地把每个字符在字母表中向前移动 13 位。因为移动的位数是可能的 26 个字符的一半,所以对文本再次执行这个算法,就恢复到了它最初的形式。可以使用如下命令:

#加密
echo ‘shiyanlou’ |  tr  ‘a-zA-Z’  ‘n-za-mN-ZA-M’ 
fuvlnaybh
#解密
echo ‘fuvlnaybh’ | tr  ‘a-zA-Z’  ‘n-za-mN-ZA-M’ 
shiyanlou

img

Comments

2016-06-29