2 linux 簡單學習一下 awk 命令

2021-10-14 19:02:34 字數 1836 閱讀 7623

經常使用 ps 命令, 我們可能想單獨獲取乙個程序id, 比如有人會丟給你乙個這樣的命令:

ps -ef | grep 程序名稱關鍵字 | awk ''

執行就可以了, 原理是什麼呢?

我想根據某乙個關鍵字去查詢哪些文件裡有這個關鍵字, 我會寫乙個語句

find . -name 「*.md」 | xargs grep 「關鍵字」

例如這樣的命令:

➜  htmls find

. -name "*.md"

|xargs

grep

"cpp"

./cpp-html/make/@makefile寫法.htm.md::為什麼g++ *.cpp 能直接編譯出可執行檔案還要makefile呢?

grep: ./cpp-html/make/@make: no such file or directory

grep: 命令零基礎教程.html.md: no such file or directory

grep: ./cpp-html/make/@cmake: no such file or directory

grep: tutorial.htm.md: no such file or directory

不會xargs和find命令 的請翻我的歷史部落格, 編號1@linux. 裡面有介紹

你會發現, 因為有的檔名稱裡面有空格, 所有導致 grep 命令取錯了檔名, 我們需要給檔名左右加上雙引號才能保證可靠.

這個時候, 我們就必須要 awk 命令了.

我們先來看乙個例子,來自參考[1].

➜  htmls awk

'begin '

你好,簡單教程

怎麼解釋呢? begin 表示,從頭開始, 忽略管道輸入,或者不接受輸入的檔名, 所以如果要和其他命令配合,就要把begin去掉

普通的awk命令是awk 命令 檔名,表示按行處理. 每行按空格切分, $0表示整行, $1表示第乙個切分元素.

如果我們要輸出乙個雙引號, 那麼就要使用轉義符\, 當然, 還要使用外面的雙引號把本身的雙引號括起來, 表示這個乙個字元, 因為 awk 本身就是乙個語言直譯器, 就類似於 python 一樣的東西.

➜  htmls echo 11 > a.txt

➜ htmls awk

'' a.txt

"

我們可以看到 awk 命令確實輸出了雙引號.

在第二個場景中, 我們想使用 grep 命令, 但是使用 grep命令,會

我想根據某乙個關鍵字去查詢哪些文件裡有這個關鍵字, 我會寫乙個語句

find . -name 「*.md」 | xargs grep "關鍵字"

因為有的檔名稱裡面有空格, 所有導致 grep 命令取錯了檔名, 我們需要給檔名左右加上雙引號才能保證可靠.

所以, 我們現在就來改造這個命令.

find -l . -name "*.md" | awk '' | xargs grep 關鍵字

需要說明的是, awk命令的字元拼接, 就是用空格隔開就可以了, 類似於 python中的+, 在這裡我們使用print a $0 a.

[1] awk 字串拼接符 - 空格 ( 』 』 )

[2] awk中如何輸出單引號

學習筆記2 Linux

一 常見的三種模式 正常模式 插入模式 命令模式。二 各個模式之間的轉換。正常模式 i或者o 插入模式 esc 正常模式 命令模式 三 幾種命令 wq 儲存並退出文字。q 修改了不想儲存 會強制加!q 沒有修改退出。一 基本介紹 shutdown shuedown h now 立即關機 shutdo...

簡單學習一下dubbo

什麼是dubbo?dubbo是乙個分布式服務框架,致力於提供高效能和透明化的rpc遠端服務治理方案,以及soa服務治理方案。什麼是rpc?什麼是soap?嚴格分離模組,使用介面呼叫服務 dubbo框架?0.服務容器負責啟動,載入和執行服務提供方 1.服務提供方啟動時向註冊中心註冊自己提供的服務 2....

實驗2 Linux下基本程式設計

實驗2 linux下基本程式設計 一 實驗目的 1.掌握vim編譯器 2.掌握gcc編譯器的使用 3.了解fork 程式 二 實驗工具與裝置 1 實驗裝置 計算機 帶cd rom 一台。三 實驗預備知識 1.vim的編輯器 vim有三種模式 命令模式 插入模式 最後行模式。命令模式 剛啟動vim後,...