Shell

应用

如何替换一个文件中的内容?

1、vi/vim编辑

2、sed和grep配合

命令:sed -i s/yyyy/xxxx/g grep yyyy -rl --include="*.txt" ./

作用:将当前目录(包括子目录)中所有txt文件中的yyyy字符串替换为xxxx字符串。其中,

-i 表示操作的是文件,``括起来的grep命令,表示将grep命令的的结果作为操作文件。

s/yyyy/xxxx/表示查找yyyy并替换为xxxx,后面跟g表示一行中有多个yyyy的时候,都替换,而不是仅替换第一个

另外,如果不需要查找子目录,仅需要在当前目录替换,用sed命令就行了,命令如下:sed -i s/xxxx/yyyy/g ./*.txt

3、find

命令格式:find -name '要查找的文件名' | xargs perl -pi -e 's|被替换的字符串|替换后的字符串|g'

#查找替换当前目录下包含字符串并进行替换

find -name '*.txt' | xargs perl -pi -e 's|智慧乡村|北部山区|g'

#递归查找替换

find . -type f -name '*.html' | xargs perl -pi -e 's|智慧乡村|北部山区|g'

awk有什么用?

相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。

对一个文件如何只查看特定行的内容

cat/more/less/head/tail

cat可以文件整体内容;

more可以指定从第几行开始,已分页的方式展示文件内容;

less比more更加强大,解决了more不能往后翻的问题,且less不会一次性加载所有文件内容;

head用来看一个文件的前多少行;

tail用来看一个文件的最后多少行;

所以这个需求需要多个命令配合:

【一】从第3000行开始,显示1000行。即显示3000~3999行

cat filename | tail -n +3000 | head -n 1000

【二】显示1000行到3000行

cat filename| head -n 3000 | tail -n +1000

rcp和scp有什么区别?

rcp通过rsh方式远端复制文件或目录。 scp通过ssh方式远端复制文件或目录。scp更加安全,可以理解为rcp的取代品。