map转string Nmap WEB视频自适应 网站favicon图标制作 机器学习 Filter matlotlib rest recursion pdo reference tree uiwebview Browserify vue自定义事件 vue案例 react视频教程 click事件 mysql默认密码 mysql操作日志 kb转mb cad怎么重复上一次命令 android入门实例 mysql卸载工具 河南普通话报名入口 python指数函数 python在线教程 python字典添加 python中的join函数 java开发环境 java手册 java的基本数据类型 java接口类型 java实现多线程 java时间戳转日期 java读取文件数据 linux系统教程 python网站开发实例 脚本之家 linux命令详解词典
当前位置: 首页 > 学习教程  > 编程语言

Linux 命令速查手册(三)Linux文本处理

2020/12/28 20:12:32 文章标签:

Linux 命令速查手册(三)Linux文本处理3.1 find:文件查找3.2 grep:文本搜索3.3 xargs:命令行参数转换3.4 sort:排序3.5 uniq:消除重复行3.6 cut:按列切分字符3.7 paste:按…

Linux 命令速查手册(三)Linux文本处理

    • 3.1 find:文件查找
    • 3.2 grep:文本搜索
    • 3.3 xargs:命令行参数转换
    • 3.4 sort:排序
    • 3.5 uniq:消除重复行
    • 3.6 cut:按列切分字符
    • 3.7 paste:按列拼接文本
    • 3.8 wc:统计行和字符数
    • 3.9 sed:文本替换
    • 3.10 awk:数据流处理

3.1 find:文件查找

  • find . -name “file_name” -maxdepth n:在当前目录下搜索n层,查找 file_name 文件
root@Eternal:/home/sigai# find . -name "new*" 
./new_dir
./new_dir/new_file
root@Eternal:/home/sigai# find . -maxdepth 1 -name "new*" 
./new_dir
root@Eternal:/home/sigai# find . -maxdepth 1 -name "new*" -type f
root@Eternal:/home/sigai# find . -maxdepth 2 -name "new*" -type f
./new_dir/new_file
root@Eternal:/home/sigai# 
  • find [dir_name] -name [file_name] :在 dir_name 下查找 file_name 文件
root@Eternal:~# find -name "*.txt" -o -name "*.pdf"
./Programfile/miniconda/share/doc/xz/faq.txt
./Programfile/miniconda/share/doc/xz/xz-file-format.txt
./Programfile/miniconda/share/doc/xz/history.txt
./Programfile/miniconda/share/doc/xz/examples/00_README.txt
./Programfile/miniconda/share/doc/xz/lzma-file-format.txt
...
root@Eternal:~# find . \( -name "*.txt" -o -name "*.pdf" \)
./Programfile/miniconda/share/doc/xz/faq.txt
./Programfile/miniconda/share/doc/xz/xz-file-format.txt
./Programfile/miniconda/share/doc/xz/history.txt
./Programfile/miniconda/share/doc/xz/examples/00_README.txt
./Programfile/miniconda/share/doc/xz/lzma-file-format.txt
......
  • find [dir_name] -path [path_name]:在 dir_name 目录下,查找包含 path_name 的路径
root@Eternal:~# find /home -path "*new_dir"
/home/sigai/new_dir
/home/new_dir
root@Eternal:~# find /home -path "*new_dir*"
/home/sigai/new_dir
/home/sigai/new_dir/new_file
/home/new_dir
/home/new_dir/old_file
root@Eternal:~# find / -path "*new_dir*"
/home/sigai/new_dir
/home/sigai/new_dir/new_file
/home/new_dir
/home/new_dir/old_file
/new_dir
/new_dir/new_file

3.2 grep:文本搜索

  • grep match_pattern file:默认访问匹配
    • -o 只输出匹配的文本行 VS -v 只输出没有匹配的文本行
    • -c 统计文件中包含文本的次数
  • grep -c “text” filename
    • -n 打印匹配的行号
    • -i 搜索时忽略大小写
    • -l 只打印文件名
  • grep “content” . -R -n:在多级目录中对文本递归搜索
root@Eternal:/home/sigai# grep "file" . -R -n
./.bashrc:2:# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
./.bashrc:15:# append to the history file, don't overwrite it
./.bashrc:27:# match all files and zero or more directories and subdirectories.
./.bashrc:30:# make less more friendly for non-text input files, see lesspipe(1)
./.bashrc:100:# You may want to put all your additions into a separate file like
./.bashrc:109:# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
./.bash_history:9:chmod new_dir/new_file 
./.bash_history:10:chmod 777 new_dir/new_file 
./.bash_history:14:ln new_dir/new_file soft_link_new
./.bash_history:16:chmod a+x new_dir/new_file 
./.profile:1:# ~/.profile: executed by the command interpreter for login shells.
./.profile:2:# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
./.profile:4:# see /usr/share/doc/bash/examples/startup-files for examples.
./.profile:5:# the files are located in the bash-doc package.
./.profile:7:# the default umask is set in /etc/profile; for setting the umask
./new_dir/new_file:1:This is a new file.
root@Eternal:/home/sigai# grep -e "file" -e "old" new_dir/new_file 
This is a new file.

3.3 xargs:命令行参数转换

  • cat file_name | xargs -n 3:单行输出转换为多行输出
root@Eternal:/home/sigai# grep -e "file" -e "old" new_dir/new_file 
This is a new file.
root@Eternal:/home/sigai# cat new_dir/new_file  | xargs -n 3
This is a
new file.
root@Eternal:/home/sigai#

3.4 sort:排序

字段说明

  • -n 按数字进行排序 VS -d 按字典序进行排序
  • -r 逆序排序
  • -k N 指定按第N列排序
root@Eternal:/home/sigai# sort -nrk 1 new_dir/new_file 
This is a new file.

3.5 uniq:消除重复行

  • sort file_name | uniq
    • 消除重复行
    • -c 统计各行在文件中重复的次数
    • -d 找出重复行
root@Eternal:/home/sigai# sort new_dir/new_file | uniq
  Add a new lines.
  The Third line.
  This is a new file.
root@Eternal:/home/sigai# sort new_dir/new_file | uniq -c
      1   Add a new lines.
      2   The Third line.
      1   This is a new file.
root@Eternal:/home/sigai# sort new_dir/new_file | uniq -d
  The Third line.

3.6 cut:按列切分字符

  • cut -f1,3 file_name:截取文件 file_name 的第2行和第4行
  • cut -f2 file_name:删除文件 file_name 的第2行
  • cut f2 -d “:” file_name:指定定界符

3.7 paste:按列拼接文本

  • paste -d “:” file_1 file_2 :将两个文件拼接,以":" 分割
root@Eternal:/home/sigai/new_dir# paste -d ":" new_file table.txt > paste_file
root@Eternal:/home/sigai/new_dir# cat paste_file 
  This is a new file.:01 tom 69 91
  Add a new lines.:02 jack 71 87
  The Third line.:03 alex 68 98
  The Third line.:

3.8 wc:统计行和字符数

  • wc
    • -l:统计行数
    • -w:统计单词数
    • -c:统计字符数
root@Eternal:/home/sigai/new_dir# cat paste_file | wc -l
4
root@Eternal:/home/sigai/new_dir# cat paste_file | wc -w
24
root@Eternal:/home/sigai/new_dir# cat paste_file | wc -c
119

3.9 sed:文本替换

  • sed ‘s/text/replace_txt/’ file:将文件 filetext 替换为 replace_txt
root@Eternal:/home/sigai/new_dir# cat new_file 
  This is a new file.
  Add a new lines.
  The Third line.
  The Third line.
root@Eternal:/home/sigai/new_dir# sed 's/lines/line/' new_file 
  This is a new file.
  Add a new line.
  The Third line.
  The Third line.

具体用法:https://man.linuxde.net/sed

3.10 awk:数据流处理

awk 的用法很广,以后专门写一篇 awk 的文章进行介绍。


本文链接: http://www.dtmao.cc/news_show_550440.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?