day019-特殊符號、正則表達式與三劍客

文章目錄

  • 1. 磁盤空間不足-排查流程
  • 2. 李導推薦書籍
    • 2.1 大話存儲
    • 2.2 性能之巔
  • 3. 特殊符號
    • 3.1 引號系列(面試題)
    • 3.2 重定向符號
      • 3.2.1 cat與重定向
      • 3.2.2 tr命令:替換字符
      • 3.2.3 xargs:參數轉換
      • 3.2.4 標準全量追加重定向
  • 4. 正則表達式
    • 4.1 基礎正則
      • 4.1.1 測試文件
      • 4.1.2 查找以I開頭的行
      • 4.1.3 查找以m結尾的行
      • 4.1.4 查找非空行
      • 4.1.5 排除sshd配置文件中空行和以#開頭的行
      • 4.1.6 過濾出以I開頭以!結尾的行
      • 4.1.7 過濾出含有大寫字符的行
      • 4.1.8 過濾出含有大寫字符或數字的行
      • 4.1.9 過濾出文件中以I或m或n開頭的并且以!或數字結尾的行
      • 4.1.10 過濾出以.結尾的行
    • 4.2 擴展正則
      • 4.2.1 查詢sshd或rsyslog進程
      • 4.2.2 統計文件中單詞次數,取出前5
      • 4.2.3 統計文件中字母次數,取出前5
      • 4.2.4 過濾最少有3個最多有5個連續數字的行
      • 4.2.5 小括號():表示一個整體
  • 5. awk和正則
    • 5.1 取出passwd文件中第1、2列和最后一列
    • 5.2 取出ip a命令中的ip地址
    • 5.3 獲取文件中系統的運行時間
    • 5.4 awk取行
  • 6. 思維導圖

1. 磁盤空間不足-排查流程

在這里插入圖片描述

2. 李導推薦書籍

2.1 大話存儲

在這里插入圖片描述

2.2 性能之巔

在這里插入圖片描述

3. 特殊符號

3.1 引號系列(面試題)

引號說明
反引號執行命令
單引號所見即所得。單引號中的內容不會被解析,直接進行輸出。
雙引號一些特殊符號會被解析:``,$(),$……
不加引號特殊符號會被解析,額外支持{}、*通配符

3.2 重定向符號

重定向符號說名使用
>或1>標準輸出重定向創建文件并寫入內容
>>或1>>標準輸出追加重定向修改配置文件
2>標準錯誤輸出重定向較少單獨使用
2>>標準錯誤輸出追加重定向較少單獨使用
>>oldboy.log 2>&1;
&>>oldboy.log
正確輸出和錯誤輸出都寫入到同一個文件運行腳本或命令時經常使用
<或0<標準輸入重定向,與特定命令使用,讀取文件內容:tr、xargs其他命令幾乎不會用
<<或0<<標準輸入追加重定向,cat命令向文件中批量寫入多行內容cat常用

3.2.1 cat與重定向

  • cat命令寫文件

在這里插入圖片描述

  • EOF為標識符標識內容的結束,用其他符號也行。

3.2.2 tr命令:替換字符

[root@oldboy99-Kylin /oldboy]# cat w.txt 16:26:42 up 83 days,  7:42,  1 user,  load average: 0.00, 0.00, 0.0007:05:48 up 18:42,  2 users,  load average: 0.01, 0.01, 0.00
[root@oldboy99-Kylin /oldboy]# tr 'a-z' 'A-Z' < w.txt 16:26:42 UP 83 DAYS,  7:42,  1 USER,  LOAD AVERAGE: 0.00, 0.00, 0.0007:05:48 UP 18:42,  2 USERS,  LOAD AVERAGE: 0.01, 0.01, 0.00
  • tr接受標準輸入的數據,將數據中的小寫字符都替換成本大寫字符

3.2.3 xargs:參數轉換

  • xargs的作用:從標準輸入接受多個參數并轉換成多行
  • seq num:形成一列的序列數字
[root@oldboy99-Kylin /oldboy]# seq 10 > num.txt
[root@oldboy99-Kylin /oldboy]# cat num.txt
1
2
3
4
5
6
7
8
9
10
[root@oldboy99-Kylin /oldboy]# xargs -n 3 < num.txt
1 2 3
4 5 6
7 8 9
10

3.2.4 標準全量追加重定向

  • >>oldboy.log 2>&1
  • &>>oldboy.log
[root@oldboy99-Kylin /oldboy]# echo skx >> oldboy.log 2>&1
[root@oldboy99-Kylin /oldboy]# echo skx >> oldboy.log 2>&1
[root@oldboy99-Kylin /oldboy]# echo skx >> oldboy.log 2>&1
[root@oldboy99-Kylin /oldboy]# echo1 skx >> oldboy.log 2>&1
[root@oldboy99-Kylin /oldboy]# echo1 skx >> oldboy.log 2>&1
[root@oldboy99-Kylin /oldboy]# echo1 skx >> oldboy.log 2>&1
[root@oldboy99-Kylin /oldboy]# cat oldboy.log 
skx
skx
skx
-bash: echo1: command not found
-bash: echo1: command not found
-bash: echo1: command not found

4. 正則表達式

正則表達式:regular expression,對字符進行查找或過濾。

正則表達式符號命令
基礎正則^、&、.、*、[]grep、sed、awk
擴展正則|、+、{}、()、?egrep/grep -E、sed -r、awk

4.1 基礎正則

4.1.1 測試文件

cat >/oldboy/re.txt<<EOF
I am oldboy teacher!
I teach linux.
I like badminton ball ,billiard ball and
chinese chess!
my blog is http://oldboy.blog.51cto.com
our size is http://blog.oldboyedu.com
my qq is 49000448
not 4900000448.
my god ,i am not oldbey,but OLDBOY!
EOF

4.1.2 查找以I開頭的行

[root@oldboy99-Kylin /oldboy]# grep '^I' re.txt -n
1:I am oldboy teacher!
2:I teach linux.
4:I like badminton ball ,billiard ball and chinese chess!

4.1.3 查找以m結尾的行

  • 文件中以m結尾的行最后還有空格
  • cat -A:顯示文件中的隱藏字符
[root@oldboy99-Kylin /oldboy]# cat -A re.txt 
I am oldboy teacher!$
I teach linux.$
$
I like badminton ball ,billiard ball and chinese chess!$
my blog is http://oldboy.blog.51cto.com  $
our size is http://blog.oldboyedu.com  $
$
my qq is 49000448$
not 4900000448.$
$
my god ,i am not oldbey,but OLDBOY!$
[root@oldboy99-Kylin /oldboy]# grep 'm  $' re.txt 
my blog is http://oldboy.blog.51cto.com  
our size is http://blog.oldboyedu.com  

4.1.4 查找非空行

  • ^$:表示過濾空行
[root@oldboy99-Kylin /oldboy]# grep -vn '^$' re.txt 
1:I am oldboy teacher!
2:I teach linux.
4:I like badminton ball ,billiard ball and chinese chess!
5:my blog is http://oldboy.blog.51cto.com  
6:our size is http://blog.oldboyedu.com  
8:my qq is 49000448
9:not 4900000448.
11:my god ,i am not oldbey,but OLDBOY!

4.1.5 排除sshd配置文件中空行和以#開頭的行

grep -Evn '^$|^#' /etc/ssh/sshd_config

4.1.6 過濾出以I開頭以!結尾的行

  • .:表示任意字符
  • *:表示前一個字符出現0次或多次
[root@oldboy99-Kylin /oldboy]# grep '^I.*!$' re.txt 
I am oldboy teacher!
I like badminton ball ,billiard ball and chinese chess!

4.1.7 過濾出含有大寫字符的行

[root@oldboy99-Kylin /oldboy]# grep -n '[A-Z]' re.txt 
1:I am oldboy teacher!
2:I teach linux.
4:I like badminton ball ,billiard ball and chinese chess!
11:my god ,i am not oldbey,but OLDBOY!

4.1.8 過濾出含有大寫字符或數字的行

[root@oldboy99-Kylin /oldboy]# grep -n '[A-Z0-9]' re.txt 
1:I am oldboy teacher!
2:I teach linux.
4:I like badminton ball ,billiard ball and chinese chess!
5:my blog is http://oldboy.blog.51cto.com  
8:my qq is 49000448
9:not 4900000448.
11:my god ,i am not oldbey,but OLDBOY!

4.1.9 過濾出文件中以I或m或n開頭的并且以!或數字結尾的行

[root@oldboy99-Kylin /oldboy]# grep '^[Imn].*[0-9!]$' re.txt 
I am oldboy teacher!
I like badminton ball ,billiard ball and chinese chess!
my qq is 49000448
my god ,i am not oldbey,but OLDBOY!

4.1.10 過濾出以.結尾的行

[root@oldboy99-Kylin /oldboy]# grep -n '\.$' re.txt 
2:I teach linux.
9:not 4900000448.
####################################################
[root@oldboy99-Kylin /oldboy]# grep -n '[.]$' re.txt 
2:I teach linux.
9:not 4900000448.

4.2 擴展正則

4.2.1 查詢sshd或rsyslog進程

[root@oldboy99-Kylin /oldboy]# ps -ef |grep -E '[s]shd|[r]syslog'
root         866       1  0 08:27 ?        00:00:00 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
root         908       1  0 08:27 ?        00:00:01 /usr/sbin/rsyslogd -n -i/var/run/rsyslogd.pid
root        1670     866  0 09:55 ?        00:00:00 sshd: root [priv]
root        1696    1670  0 09:55 ?        00:00:00 sshd: root@pts/0

4.2.2 統計文件中單詞次數,取出前5

  • +:前一個字符出現一次或多次
  • -o:輸出匹配的字符
[root@oldboy99-Kylin /oldboy]# grep -Eo '[a-zA-Z]+' re.txt |sort |uniq -c |sort -k1nr |head -53 blog3 I3 is3 my2 am

4.2.3 統計文件中字母次數,取出前5

[root@oldboy99-Kylin /oldboy]# grep -Eo  '[a-zA-Z]' re.txt |sort |uniq -c |sort -k1nr |head -518 o15 l12 b11 i11 t

4.2.4 過濾最少有3個最多有5個連續數字的行

[root@oldboy99-Kylin /oldboy]# grep -E '[0-9]{3,5}' re.txt 
my qq is 49000448
not 4900000448.

4.2.5 小括號():表示一個整體

[root@oldboy99-Kylin /oldboy]# lscpu |grep -E 'L(1d|1i|2|3)'
L1d cache:                          32 KiB
L1i cache:                          32 KiB
L2 cache:                           256 KiB
L3 cache:                           8 MiB
#############################################################
[root@oldboy99-Kylin /oldboy]# lscpu |grep -E 'L(1[di]|[23])'
L1d cache:                          32 KiB
L1i cache:                          32 KiB
L2 cache:                           256 KiB
L3 cache:                           8 MiB

5. awk和正則

  • -F:Field Separator,字段分隔符

5.1 取出passwd文件中第1、2列和最后一列

[root@oldboy99-Kylin ~]# awk -F ':' '{print $1,$2,$NF}' /etc/passwd |head -5 |column -t
root    x  /bin/bash
bin     x  /sbin/nologin
daemon  x  /sbin/nologin
adm     x  /sbin/nologin
lp      x  /sbin/nologin

5.2 取出ip a命令中的ip地址

  • awk按照空格或斜線作為分隔符
[root@oldboy99-Kylin ~]# ip a show ens33 |awk -F '[ /]+' 'NR==3{print $3}'
10.0.0.200

5.3 獲取文件中系統的運行時間

文件內容:

cat >> w.txt <<EOF
16:26:42 up 83 days,  7:42,  1 user,  load average: 0.00, 0.00, 0.00
07:05:48 up 18:42,  2 users,  load average: 0.01, 0.01, 0.00
EOF

[root@oldboy99-Kylin /oldboy]# awk -F 'up +|, +[0-9]+ +user' '{print $2}' w.txt 
83 days,  7:42
18:42

在這里插入圖片描述

5.4 awk取行

  • awk ‘NR==3’
  • awk ‘NR>=3’
  • awk ‘NR>=3&&NR<=10’
  • awk ‘/匹配行的正則表達式/’ 文件名

  • 在passwd文件中過濾包含root或oldboy的用戶信息
[root@oldboy99-Kylin ~]# awk '/^root|^oldboy/' /etc/passwd
root:x:0:0:root:/root:/bin/bash
oldboy:x:1000:1000::/home/oldboy:/bin/bash

6. 思維導圖

【金山文檔】 思維導圖 https://www.kdocs.cn/l/co3I7PtpTYQX

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/82340.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/82340.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/82340.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Vue3 watch 使用與注意事項

watch 的第一個參數可以是不同形式的“數據源”&#xff1a;它可以是一個 ref (包括計算屬性)、一個響應式對象、一個 getter 函數、或多個數據源組成的數組&#xff1a; 1&#xff1a;reactive監聽對象 <template><div><h1>情況二&#xff1a;watchEffect…

醫學寫作供應商管理全流程優化

1. 供應商篩選與評估 1.1 資質審核 1.1.1 行業認證核查 核查供應商的行業認證,如AMWA醫學寫作認證、EMWA會員資格、ISO 9001等,確保其專業資質。 1.1.2 團隊背景評估 評估團隊成員專業背景,包括醫學/藥學學位、臨床試驗經驗、發表記錄,保障專業能力。 1.1.3 國際規范熟悉…

固態硬盤顆粒類型、選型與應用場景深度解析

一、固態硬盤顆粒類型的技術演進與特性 固態硬盤&#xff08;SSD&#xff09;的性能核心在于存儲單元結構的設計&#xff0c;這種設計直接決定了數據的存儲密度、讀寫速度、耐久度及成本效益。當前主流的閃存顆粒類型呈現從單層到多層架構的梯度演進&#xff0c;其技術特征與應…

CAPL自動化-診斷Demo工程

文章目錄 前言一、診斷控制面板二、診斷定義三、發送診斷通過類.方法的方式req.SetParameterdiagSetParameter四、SendRequestAndWaitForResponse前言 本文將介紹CANoe的診斷自動化測試,工程可以從CANoe的 Sample Configruration 界面打開,也可以參考下面的路徑中打開(以實…

嵌入式預處理鏈接腳本lds和map文件

在嵌入式開發中&#xff0c;.lds.S 文件是一個 預處理后的鏈接腳本&#xff08;Linker Script&#xff09;&#xff0c;它結合了 C 預處理器&#xff08;Preprocessor&#xff09; 的功能和鏈接腳本的語法。它的核心作用仍然是 定義內存布局和鏈接規則&#xff0c;但通過預處理…

PT5F2307觸摸A/D型8-Bit MCU

1. 產品概述 ● PT5F2307是一款51內核的觸控A/D型8位MCU&#xff0c;內置16K*8bit FLASH、內部256*8bit SRAM、外部512*8bit SRAM、觸控檢測、12位高精度ADC、RTC、PWM等功能&#xff0c;抗干擾能力強&#xff0c;適用于滑條遙控器、智能門鎖、消費類電子產品等電子應用領域。 …

RabbitMQ——消息確認

一、消息確認機制 生產者發送的消息&#xff0c;可能有以下兩種情況&#xff1a; 1> 消息消費成功 2> 消息消費失敗 為了保證消息可靠的到達消費者&#xff08;&#xff01;&#xff01;&#xff01;注意&#xff1a;消息確認機制和前面的工作模式中的publisher confi…

C++異步(1)

什么是異步? 異步就是多個線程是同時執行的&#xff0c;與之相對的就是線程同步&#xff0c;二者都應用在并發的場景上。 異步的特點 異步執行的任務無需等待其他任務完成&#xff0c;其本身是通過非阻塞的方式執行的&#xff0c;不依賴前驅任務&#xff0c;通常用于IO密集…

向量數據庫Milvus03-高級功能與性能調優

Milvus高級功能與性能調優 目錄 高級特性詳解性能調優技巧生產環境部署最佳實踐總結與展望 1. 高級特性詳解 1.1 多索引兼容 Milvus 支持多種索引類型&#xff08;如 HNSW、IVF_PQ、IVF_FLAT&#xff09;的混合使用&#xff0c;以適應不同場景的需求。 HNSW&#xff08;Hier…

5月24日day35打卡

模型可視化與推理 知識點回顧&#xff1a; 三種不同的模型可視化方法&#xff1a;推薦torchinfo打印summary權重分布可視化進度條功能&#xff1a;手動和自動寫法&#xff0c;讓打印結果更加美觀推理的寫法&#xff1a;評估模式 作業&#xff1a;調整模型定義時的超參數&#x…

野火魯班貓(arrch64架構debian)從零實現用MobileFaceNet算法進行實時人臉識別(三)用yolov5-face算法實現人臉檢測

環境直接使用第一篇中安裝好的環境即可 先clone yolov5-face項目 git clone https://github.com/deepcam-cn/yolov5-face.git 并下載預訓練權重文件yolov5n-face.pt 網盤鏈接: https://pan.baidu.com/s/1xsYns6cyB84aPDgXB7sNDQ 提取碼: lw9j &#xff08;野火官方提供&am…

R語言科研編程-柱狀圖

R語言簡介 R語言是一種開源的統計計算和圖形繪制編程語言&#xff0c;廣泛應用于數據分析、機器學習、數據可視化等領域。它由Ross Ihaka和Robert Gentleman于1993年開發&#xff0c;具有豐富的統計函數庫和圖形功能&#xff0c;尤其適合數據科學研究和可視化任務。 使用R語言…

Android-Handler學習總結

??面試官?&#xff1a;你好&#xff01;我看你簡歷里提到熟悉 Android 的 Handler 機制&#xff0c;能簡單說一下它的作用嗎&#xff1f; ?候選人?&#xff1a; Handler 是 Android 中用來做線程間通信的工具。比如Android 應用的 UI 線程&#xff08;也叫主線程…

【iOS】分類、擴展、關聯對象

分類、擴展、關聯對象 前言分類擴展擴展和分類的區別關聯對象key的幾種用法流程 總結 前言 最近的學習中筆者發現自己對于分類、擴展相關知識并不是很熟悉&#xff0c;剛好看源碼類的加載過程中發現有類擴展與關聯對象詳解。本篇我們來探索一下這部分相關知識&#xff0c;首先…

30.第二階段x64游戲實戰-認識網絡數據包發送流程

免責聲明&#xff1a;內容僅供學習參考&#xff0c;請合法利用知識&#xff0c;禁止進行違法犯罪活動&#xff01; 內容參考于&#xff1a;圖靈Python學院 上一個內容&#xff1a;29.第二階段x64游戲實戰-技能冷卻 發送數據包的方式&#xff08;函數&#xff09;操作系統提供…

【每日一題】【前綴和優化】【前/后綴最值】牛客練習賽139 B/C題 大衛的密碼 (Hard Version) C++

牛客練習賽139 B題 大衛的密碼 (Easy Version) 牛客練習賽139 C題 大衛的密碼 (Hard Version) 大衛的密碼 題目背景 牛客練習賽139 題目描述 給定一個 n m n\times m nm的網格圖&#xff0c;我們使用 ( i , j ) (i,j) (i,j)表示網格中從上往下數第 i i i行和從左往右數第…

文件夾圖像批處理教程

前言 因為經常對圖像要做數據清洗&#xff0c;又很費時間去重新寫一個&#xff0c;我一直在想能不能寫一個通用的腳本或者制作一個可視化的界面對文件夾圖像做批量的修改圖像大小、重命名、劃分數據訓練和驗證集等等。這里我先介紹一下我因為寫過的一些腳本&#xff0c;然后我…

【Unity實戰筆記】第二十四 · 使用 SMB+Animator 實現基礎戰斗系統

轉載請注明出處&#xff1a;&#x1f517;https://blog.csdn.net/weixin_44013533/article/details/146409453 作者&#xff1a;CSDN|Ringleader| 1 結構 1.1 狀態機 1.2 SMB 2 代碼實現 2.1 核心控制 Player_Base_SMB 繼承 StateMachineBehaviour &#xff0c;控制變量初始…

Python虛擬環境再PyCharm中自由切換使用方法

Python開發中的環境隔離是必不可少的步驟,通過使用虛擬環境可以有效地管理不同項目間的依賴,避免包沖突和環境污染。虛擬環境是Python官方提供的一種獨立運行環境,每個項目可以擁有自己單獨的環境,不同項目之間的環境互不影響。在日常開發中,結合PyCharm這樣強大的IDE進行…

大模型智能體入門掃盲——基于camel的概述

前言 本篇博客想帶讀者進行一個智能體入門掃盲&#xff0c;了解基礎知識&#xff0c;為什么用camel呢&#xff0c;因為小洛發現它們文檔對這種智能體的基本組件介紹得很全面深入。 基礎概念 agent 一個典型的agent智能體包含三個核心部分&#xff1a; 感知模塊&#xff1…