您的位置:首页 > 运维架构 > Shell

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

2014-04-08 20:06 483 查看
一.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.' ^'指匹配字符串在行首,'$'指匹配的字符串在行尾
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐