【从面试出发学习java】- Linux - 面试向

要在windows上运行linux指令,可以通过安装cygwin,具体参考下面链接
https://blog.csdn.net/u010356768/article/details/90756742

面试题:

如何查找特定的文件

使用 find 命令
find语法
find path -option [ -print ] [ -exec -ok command ] {} ;

一般实例

将当前目录及其子目录下所有文件后缀为 .c 的文件列出来:

# find . -name "*.c"

将当前目录及其子目录中的所有文件列出:

# find . -type f

将当前目录及其子目录下所有最近 20 天内更新过的文件列出:

# find . -ctime -20

查找 /var/log 目录中更改时间在 7 日以前的普通文件,并在删除之前询问它们:

# find /var/log -type f -mtime +7 -ok rm {} \;

查找当前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件:

# find . -type f -perm 644 -exec ls -l {} \;

查找系统中所有文件长度为 0 的普通文件,并列出它们的完整路径:

# find / -type f -size 0 -exec ls -l {} \;

面试里常用的方式

精确查找文件

find ~ -name "target3.java"

模糊查找文件

find ~ -name "target*"

不区分文件名大小写去查找文件

find ~ -iname "target*"

检索文件内容

grep
grep 指令用于查找内容包含指定的范本样式的文件如果发现某文件的内容符合所指定的范本样式,预设 grep 指令会把含有范本样式的那一列显示出来。**若不指定任何文件名称,或是所给予的文件名为 -,**则 grep 指令会从标准输入设备读取数据。

语法:grep [options] pattern file

从文件内容查找匹配指定字符串的行:

**$ grep "被查找的字符串" 文件名**

例子:在当前目录里第一级文件夹中寻找包含指定字符串的 .in 文件

**grep "thermcontact" /.in**

从文件内容查找与正则表达式匹配的行:

**$ grep –e "正则表达式" 文件名**

查找时不区分大小写:

**$ grep –i "被查找的字符串" 文件名**

查找匹配的行数:

**$ grep -c "被查找的字符串" 文件名**

从文件内容查找不匹配指定字符串的行:

**$ grep –v "被查找的字符串" 文件名**

管道操作符 |
可将指令链接起来,前一个指令的输出作为后一个指令的输入
使用管道注意的要点

  1. 只处理前一个命令正确输出,不处理错误输出
  2. 右边命令必须能够接受标准输入流,否则传递过程中数据会被抛弃
  3. sed, awk, grep, cut, head, more, split等

例子:
例如:ps aux | grep “test” 在 ps aux中的結果中查找test。
例如:find . -name “*.txt” | xargs grep “good” -n --color=auto 把find的结果当成参数传入到grep中,即在那些文件内部查找good关键字。

常用指令
查找包含某个字段的文件

grep ‘partial\[true\]’ bsc-plat-al-data.info.log 

查找正则表达式

grep -o ‘engine\[[0-9a-z]*\]

过滤掉包含相关字符串的内容

grep -v ‘grep’ 

对文件内容做统计

awk
awk 是一种处理文本文件的语言,是一个强大的文本分析工具。
语法:
awk [option] ‘cmd’ file

一次读取一行文本,按输入分隔符进行切片,切成多个组成部分
将切片直接保存在内建的变量中,$1, $2… ($0表示行的全部)
支持对单个切片的判断,支持循环判断,默认分隔符为空格

基本用法
log.txt文本内容如下:
2 this is a test
3 Are you like awk
This’s a test
10 There are orange,apple,mongo

用法一:
awk ‘{[pattern] action}’ {filenames} # 行匹配语句 awk ‘’ 只能用单引号

实例:

# 每行按空格或TAB分割,输出文本中的14项
 $ awk '{print $1,$4}' log.txt
 ---------------------------------------------
 2 a
 3 like
 This's
 10 orange,apple,mongo
 # 格式化输出
 $ awk '{printf "%-8s %-10s\n",$1,$4}' log.txt
 ---------------------------------------------
 2        a
 3        like
 This's
 10       orange,apple,mongo

用法二:
awk -F #-F相当于内置变量FS, 指定分割字符
实例:

# 使用","分割
 $  awk -F, '{print $1,$2}'   log.txt
 ---------------------------------------------
 2 this is a test
 3 Are you like awk
 This's a test
 10 There are orange apple
 # 或者使用内建变量
 $ awk 'BEGIN{FS=","} {print $1,$2}'     log.txt
 ---------------------------------------------
 2 this is a test
 3 Are you like awk
 This's a test
 10 There are orange apple
 # 使用多个分隔符.先使用空格分割,然后对分割结果再使用","分割
 $ awk -F '[ ,]'  '{print $1,$2,$5}'   log.txt
 ---------------------------------------------
 2 this test
 3 Are awk
 This's a
 10 There apple

用法三:
awk -v # 设置变量
实例:

 $ awk -va=1 '{print $1,$1+a}' log.txt
 ---------------------------------------------
 2 3
 3 4
 This's 1
 10 11
 $ awk -va=1 -vb=s '{print $1,$1+a,$1b}' log.txt
 ---------------------------------------------
 2 3 2s
 3 4 3s
 This's 1 This'ss
 10 11 10s

用法四:

awk -f {awk脚本} {文件名}
实例:
$ awk -f cal.awk log.txt

批量替换文本内容

sed
语法:sed [option] ‘sed command’ filename
适合对文本的行内容进行处理
sed 可依照脚本的指令来处理、编辑文本文件。
Sed 主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。

面试中常用的方式
sed -i ‘s/^Str/String/’ replace.java
sed -i’s/.$/;/’ replace.java
sed -i ‘s/Jack/me/g’ replace.java

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值