现在的位置: 首页 > 综合 > 正文

《Linux Shell脚本攻略》 笔记 第二章:常用命令

2016年02月22日 ⁄ 综合 ⁄ 共 2332字 ⁄ 字号 评论关闭

《Linux Shell脚本攻略》 笔记
第二章:常用命令
1、cat
     cat *.txt | tr -s '\n'   //移除空白行
     cat -n //加行号
2、find
沿着文件层次结构向下遍历,匹配符合条件的文件,并执行相应的操作。
eg:
find ./ ! -name "*.txt" -print
[root@localhost program_test]# find ./  -type f -name "*.swp" -delete

3、xargs 将标准输入数据转换成命令行参数。
[root@localhost program_test]# cat out.txt | xargs  //将单行转化为多行

[root@localhost program_test]# cat out.txt | xargs -n 3 //将单行转化为多行,每行的个数为3.

//统计.c和.cpp的文件的代码行数.  xargs -0 将'\0'作为定界符.
[root@localhost program_test]# find . -type f -name "*.c*" -print0 | xargs -0 wc -l

  10 ./main/cos_value.c

  10 ./main/sin_value.c

   5 ./main/haha.c

  15 ./main/main.c

   8 ./hello.cpp

   8 ./sin.c

  32 ./review2.cpp

  24 ./review5.cpp

   7 ./hello.c

119 total

4.tr命令(translate的简写) 可对来自标准输入的字符进行替换、删除及压缩。
即:将一组字符变为另一组字符。
1)替换
echo “HELLO” | tr [A-Z] [a-z]
2)删除
[root@localhost program_test]# echo "hello 123 world 456" | tr -d '0-9'
hello  world 
3)压缩字符
[root@localhost program_test]# echo "GNU is     not UNIX" | tr -s ' '

GNU is not UNIX
[root@localhost program_test]# cat sum.txt

1

2

3

4

5

[root@localhost program_test]# cat sum.txt | echo $[ $(tr '\n' '+') 0 ]

15

5、md5校验
[root@localhost program_test]# md5sum out.txt > out.txt.md5

[root@localhost program_test]# cat out.txt.md5

fd46d559bf0c90170fef3da3c3de4c67  out.txt

//eg:
[root@localhost program_test]# find ./ -type f -name "*.txt" -print0 | xargs -0 md5sum >> curr_dir.md5
46e17910faf509df48dbfba9729ef018  ./banana.txt

c1dbbf63209a5580c052dc557510e7fb  ./11.txt

a80ddf02fa3a86c14066204e4bf2dbb9  ./multiline.txt
[root@localhost program_test]# md5sum -c curr_dir.md5

./banana.txt: OK

./11.txt: OK

./multiline.txt: OK

6、sort排序
//sort 按第2列排序
[root@localhost program_test]# sort -k 2 sort.txt

4 bad 5000

3  linux 50

1   mac 2000

2  winxp 100
//sort 逆序排序

[root@localhost program_test]# sort -r sort.txt

4 bad 5000

3  linux 50

2  winxp 100

1   mac 2000

//综合举例:统计字符串中每个字符出现的次数
[root@localhost program_test]# ./total_cnts.sh

AHEBHAAA

4A1B1E2H

[root@localhost program_test]# cat total_cnts.sh

INPUT="AHEBHAAA"

output=$(echo $INPUT | sed 's/[^.]/&\n/g' | sed '/^$/d' | sort | uniq -c | tr -d ' \n')

echo $INPUT

echo $output

[释义]: sed 's/[^.]/&\n/g'    //任意一个字符后面都加上\n
拆分如下:
[root@localhost program_test]# input="ahebhaaa"

[root@localhost program_test]# echo $input | sed 's/[^.]/&\n/g'

a

h

e

b

h

a

a

a

 sed '/^$/d'  //删除空行

7、临时文件命名
[root@localhost program_test]# temp_file="/tmp/var.$$"

[root@localhost program_test]# echo $temp_file

/tmp/var.16565

作者:铭毅天下

转载请标明出处,原文地址:http://blog.csdn.net/laoyang360/article/details/42364751

如果感觉本文对您有帮助,请点击支持一下,您的支持是我坚持写作最大的动力,谢谢!

抱歉!评论已关闭.