找回密码
 注册
查看: 8227|回復: 0

[教程分享] Linux 常用命令详解

[複製鏈接]
qj_change 發表於 2019-8-28 09:46:09 | 顯示全部樓層 |閱讀模式
grep命令详解:

简介:
  • grep 是文本搜索工具,能使用正则表达式搜索文本,并把匹配的行打印出来。
  • Unix 的 grep 家族包括 grep、egrep、fgrep。egrep 是 grep 的扩展,支持更多的RE(正则表达式)元字符;fgrep 是 fixed grep或者 fast grep,它把所有的字符都看作单词,也即是说,正则表达式的元字符都表示回其自身的字面意思,不再特殊。
  • Linux 使用 GNU 版本的 grep,功能更强,可以通过 -G、-E、-F 命令行选项来使用 egrep 和 fgrep 的功能。


grep常用用法:
  1. grep [-acinv] [—color=auto]  '搜寻字符串'  filename
複製代碼
-a:将 binary 文件以 text 文件的方式搜寻
        -c:计算找到’搜寻字符串’的次数
        -i:忽略大小写的不同
        -n:输出行号
        -v:反向选择,即输出不含’搜寻字符串’内容的那一行

awk命令详解:

简介:
  • awk 是一个文本分析工具,相当于 grep 的查找,sed 的编辑。
  • awk 把文件逐行读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。
  • awk 有三个不同版本:awk、hawk 和 gawk。gawk 是 AWK 的 GUN 版本。


使用方法:
  • 命令:
    1. awk '{ pattern + action }' {filenames}
    複製代碼

       pattern 是 AWK 在数据中查找的内容(表示正则表达式时,用斜杠括起来),而 action 是在找到匹配内容时执行的一系列命令。

       awk 语言的最基本功能是在文件或者字符串中基于指定规则浏览和抽取信息。抽取信息后才能进行其他的文本操作。
完整的 awk 脚本通常是用来格式化文本文件中的信息。通常以文件的一行为处理单位。

调用 awk 的三种方式:
  • 命令行方式:
    1. awk [ -F field-separator ] 'commands' input-file(s)
    複製代碼
      其中,’commands’ 是真正的AWK命令,[ -F域分隔符]是可选的,input-file(s) 是待处理的文件。
      在 AWK 中,文件的每一行中,由域分隔符分开的每一项称为一个域。默认的域分隔符是空格。
  • shell 脚本
      将所有的awk命令插入一个文件,并使awk程序可执行,然后awk命令解释器作为脚本的首行,一遍通过键入脚本名称来调用。
      相当于shell脚本首行的:
  1. #!/bin/sh
複製代碼
可以换成:
  1. #!/bin/awk
複製代碼
  • 将所有的awk命令插入到一个文件中,然后调用
    1. awk -f awk-script-file input-file(s)
    複製代碼
      其中,-f 选项加载 awk-script-file 中的 awk 脚本,input-file(s) 跟上面的是一样的。

AWK内置变量:
  • ARGC            命令行参数个数
  • ARGV            命令行参数排列
  • ENVIRON      支持队列中系统环境变量的使用
  • FILENAME     AWK浏览的文件名
  • FNR               浏览文件的记录数
  • FS                 设置输入域分隔符,等价于命令行 -F 选项
  • NF                 浏览记录的域的个数
  • NR                 已读的记录数
  • OFS               输出域分隔符
  • ORS               输出记录分隔符
  • RS                  控制记录分隔符
  • $0指当前整条记录,$1表示当前行的第一个域, $2表示当前行的第二个域,。。。。。。以此类推

print 和 printf:
  • AWK同时提供了 print 和 printf 两种打印输出的函数。
  • print 函数的参数可以是:变量、数值和字符串。字符串必须用“双引号”引用,参数用逗号分隔。如果没有逗号,参数就串联在一起,无法区分。
  • printf 函数,其用法与 C 语言的 printf 用法基本相似,可以格式化字符串。输出复杂时,printf 更好用,代码更易懂。


sed命令详解:

简介:
  • sed 是一种在线编辑器,它一次处理一行数据。处理时,把当前处理的存储在临时缓存区中,称为“模式空间”(pattern space),接着用 sed 命令处理缓存区的内容,处理完成后,将缓存区的内容送往屏幕。接着处理下一行数据,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。
  • sed 主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。


SED 使用参数:
  1. sed [-nefr] [动作]
複製代碼
      -f:直接将 sed 命令写在一个文件内,-f filename 则可以运行 filename 中的 sed 动作;
      -r:sed 的动作支持的是延伸型正规表示法的语法。(默认是基础正规表示法语法)
      -i:直接修改读取的文件内容,而不输出到终端

动作说明:[n1][,n2]function
  • n1,n2:不见得会存在,一般代表[选择进行动作的行数],如:10,20[动作行为]  表示动作只在10到20行之间进行。

function:
  • a:新增,a的后面可以接字串,这些字串会在新的一行出现(目前是下一行)
  • c:取代,c的后面可以接字串,这些字串可以取代n1,n2之间的所有行
  • d:删除,后面通常不接东西
  • i:插入,i 后面可以接字串,这些字串会在新的一行出现(目前是上一行)
  • p:列印,即将某个选择的数据印出。通常 p 会跟 sed -n 一起运行
  • s:取代,直接可以进行取代的工作。通常这个 s 的动作可以搭配正规表达式

sort命令详解:

sort 命令对 File 参数指定的文件中的行排序,并将结果写到标准输出。如果 File 指定多个文件,那么 sort 命令将这些文件连接起来,并当作一个文件进行排序。

sort语法:
  1. sort [-fbMnrtuk] [file or stdin]
複製代碼
-f:忽略大小写差异
      -b:忽略最前面的空格符部分
      -M:以月份的名字来排序,例如JAN、DEC等等的排序方法
      -n:使用“纯数字”进行排序,默认情况下使用文字形态来排序的
      -r:反向排序
      -u:就是uniq,相同的数据,仅出现一行代表
      -t:分隔符,默认用【tab】键来分割
      -k:以那个区间(field)来进行排序的意思

使用:sort 默认以第一个数据来排序,而且默认以字符串形式来排序
  1. sort -t':' -k 3           //内容以‘:’分割,以第三栏来排序
複製代碼
  1. sort -t':' -k 3n        //默认以字符排序,加n后按数字进行排序
複製代碼
  1. sort -t':' -k 3nr       //默认是正序排序,加r倒叙排序
複製代碼
  1. sort -t':' -k 6.2,6.4 -k 1r      //先根据第六个域的第2个字符到第4个字符正向排序,再根据第一个域反向排序
複製代碼
  1. sort -t':' -k 7 -u                  //根据第七个域排序,然后去重
複製代碼
uniq命令详解:

简介:
  • uniq 命令可以去除排序过的文件中的重复行,因此 uniq 经常与 sort 合用。即:为了使 uniq 起作用,所有重复的行必须是相邻的


uniq 语法:
  1. uniq [-icu]
複製代碼
-i:忽略大小写
      -c:进行计数
      -u:只显示一行



cut 命令详解:

简介:
  • cut 命令可以从一个文本文件或者文本流中提取文本列


cut 语法:
  1. cut -d'分割字符' -f fields      //用于有特定分割字符
  2. cut -c 字符区间                   //用于排列整齐的信息
複製代碼
      -d:后面接分割字符。与 -f 一起使用
      -f:一句 -d 的分割字符将一段信息分割成为数段,用 -f 取出第几段的意思
      -c:以字符(characters)的单位取出固定字符区间

wc 命令详解:

简介:
  • wc 用来统计文件里面有多少单词,多少行,多少字符


wc 语法:
  1. wc [-lwm]
複製代碼
-l:仅列出行数
      -w:仅列出多少字(英文单字)
      -m:多少字符




您需要登錄後才可以回帖 登录 | 注册

本版積分規則

手机版|小黑屋|Linux公社论坛

GMT+8, 2025-6-2 09:14 , Processed in 0.125000 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表