shell——cat,find,xargs,tr,sort,grep

来源:互联网 发布:王伟看懂世界格局知乎 编辑:程序博客网 时间:2024/05/16 12:01

一.cat

1.cat  file1 file2  file3…

2.使用管道从标准输入中读取:

echo “Hadoop hive!” | cat –file.txt

3.压缩空白行

(1)压缩多个连续空白行为单个

cat  -s file

  (2)移除空白行

                 cat  file.txt | tr -s  ‘\n’

4.cat -T  file;  显示制表符为^

5.cat  -n file;   显示行号

 

二.录制与回放终端回话

  script -t 2> timing.log  -aoutput.sessin

  exit

scriptreplay  timing.log output.session

 

三.find

1.沿着文件层次结构往下遍历,匹配符合条件的文件。

2. find . –print;

-print是使用’\n’作为分隔符的定界符,-print0指明使用’\0’作为定界符!

-name指定了文件名所匹配的字符串,-iname则忽略大小写

find  /usr/local -name “*.txt” -print

find  . !  -name “*.txt”  -print;  !含有否定的意思,不以txt结尾的文件名

find . \(-name “*.txt” –o –name “*.pdf” \)–print

find  /usr/local -path “*.txt”  -print

3.基于目录深度、文件类型的搜索

Find  .  –maxdepth  1–type f -print

Find  .  –mindepth 2 -type f  -print

-type可以对搜索文件过滤

普通文件

f

符号链接

l

目录

d

字符设备

c

块设备

b

套接字

s

Fifo

p

 

4.基于文件时间的搜索

访问时间:-atime  ,-amin

修改时间:-mtime ,-mmin

变化时间:-ctime, -cmin

find  . –type f –atime  +7 –print;打印访问时间超过7天的所有文件

-newer:找出比参考文件更新的(更长的修改时间的)所有文件

find  . –type f  -newer  file.txt -print

5.基于文件大小的搜索

find  . –type f  -size  +2k

6.删除匹配文件

find  .  –type  -f –name “*txt” –delete

7.基于文件权限和所有权的匹配

find  .  –type f  -perm 666 –print

8.找某个特定用户所拥有的文件

find  .  –type f  -user cw -print

9.find 与 –exec{}合用

find  . –type f –name“*.txt” –exec  cp {} /usr/local \;

find . –type f –name”*.pdf” –exec printf”text file: %s\n”{} \;

find . type f –name “*.cpp” –exec cat {} \;>all.out

 

四.xargs

1.xargs擅长将标准输入数据转化为命令行参数

2.将多行输入转换成单行输出

cat  file.txt  | xargs

3.将单行输入转化为多行输出

cat  file.txt | xargs –n 4

4.使用定界符分割参数

echo  “splitXshellXhadoop”| xargs –d X  -n 2

cat  file.txt |xargs  -n 2 ./demo.sh;//将file中的数据以每次2个传递给demo.sh作为参数。

 

五.tr转换命令

1.tr只能通过stdin,而无法通过命令行参数来接受输入

2.将输入字符由大写转为小写

echo “HELLO” | tr  ‘A-Z’  ‘a-z’

echo 1234 | tr ‘0-9’  ‘9876543210’

cat file.txt | tr ‘\n’  ‘’

3.指定要删除的字符集合

cat  file.txt | tr  –d ‘0-9’

4.删除补集-c

echo “hello 1 hive3 hadoop2”| tr –d –c ‘0-9 \n’;

删除集合之外的所有字符

5.tr压缩字符-s

echo “gun is  not    right?” | tr –s ‘ ‘;压缩空格

将文件中的数字相加

Cat  sum.txt

1

2

3

4

cat  sum.txt | echo$[$(tr ‘\n’ ‘+’ ) 0];尾部多了个+号所有加0.

 

六.sort

1.sort file1.txt  file2.txt > sort.txt

2.sort  -n file.txt;按数字排序

3.sort  -r file.txt;逆序排序

4.sort  -M file.txt;按月份排序

5.sort  -m sort1.txt  sort2.txt;对合并后的文件合并,不再排序

6.sort  -k  2 file.txt;对第二列排序

7.sort  -nrk 1  file.txt;对第一列逆序按数字排序


七. grep

grep用于在文件中搜索指定的字符串

1.      搜索目录下带字符串bin的文件

Grep  bin  *

2.      明确要求搜索子目录;grep  -r

3.      忽略子目录:grep  -d  skip

4.      不区分大小写地搜索:grep  -i pattern  files

5.      只列出匹配的文件名:grep  -l pattern  files

6.      列出不匹配的文件名:grep  -L pattern  files

7.      只匹配整个单词而不是字符串的一部分:grep  -W pattern  files

8.      匹配的上下午分别显示[number]行:grep –C number  pattern  files

9.      显示匹配pattern1或pattern2的行:grep  pattern1 | pattern2  files

10.  显示两者都匹配的行:grep  pattern1  files | grep pattern2

11.  \<和\>分别标注单词的开始和结尾

12.' ^'指匹配字符串在行首,'$'指匹配的字符串在行尾


0 0