導航:首頁 > 凈水問答 > linux過濾輸出流

linux過濾輸出流

發布時間:2022-12-14 05:32:44

Ⅰ Linux相關使用介紹

Linux命令分為內部命令(shell自帶的命令)和外部命令(不是shell自帶的命令,由用戶安裝),怎麼鑒別是內部命令和外部命令呢?可以通過type命令來鑒別
什麼是shell呢?shell是一個程序,常用的有bash shell,平時我們通過用戶名和密碼登錄到linux,其實就是登錄到bash shell程序,通過bash shell來操作linux內核

命令執行流程

那豈不是說使用外部命令效率會很慢嗎?
其實一點都不慢,它會去PATH環境變數設置的一堆目錄中查找

cd is a shell builtin 表示內部命令
ifconfig is hashed (/usr/sbin/ifconfig) 表示外部命令

cd命令切換文件夾
現在我們cd /usr/sbin

通過cat命令查看文件內容
通過cat ifconfig來查看ifconfig,發現是亂碼文件

file命令查看文件類型
輸入file ifconfig

從輸出信息可以看出它是一個二進制可執行文件

whereis命令查看文件位置

find / -name jdk

echo命令用戶列印信息,相當於java中的system.out.println

可以使用回車查看下一行、空格查看下一頁、q退出

一般使用man查看外部命令,help查看內部命令

查看linux下的應用和應用的進程號

當我們在這個窗口中輸入kill -9 1593的話,另外一個正在編輯文件的進程就會退出

在前面我們已經講過,bash shell程序在執行命令的一個過程及原理,對於外部命令,它會去PATH這個環境變數中查找執行命令所在的路徑,當然在去PATH中尋找之前會先去hash表中查找這個命令有沒有執行過,執行過的話會記錄在hash表中,則此次查找只需從hash表中就可以很方便的找到

查看分區信息 -h 表示文件大小後面會顯示文件大小

查看文件的使用情況

使用man ls 查看ls命令的相關介紹
-a:可以查看隱藏文件
-l:以長列表的形式展示文件列表信息

第一位 -:表示文件,d表示文件夾,b表示塊設備文件,c表示字元設備文件,p表示命令管道文件,s表示套接字文件, 從第二位開始往後數九位表示屬主許可權(每三位一組 rwx:讀、寫、執行),第11位表示的點表示分隔符,點後面的數字表示文件有幾個硬連接,第一個root代表屬主名,第二個root代表這個第一個root所在的組織,接下來的5表示文件大小,5後面的日期表示文件最後一次修改的時間, 1.txt代表的文件或文件夾的名稱
小結:

切換文件目錄
cd 文件路徑
cd:切換到家目錄
cd ~:回到家目錄(也就是家目錄)
cd ..:回到上一級目錄

創建目錄
mkdir 目錄名
mkdir -p 目錄名,級聯創建目錄

cp 被拷貝的文件(可以是路徑加文件名) 拷貝到哪個位置

復制目錄使用
cp -r 被拷貝的目錄 目標位置

移動命令
mv 被移動的文件 目標位置+目標文件名

rm 文件名(此中方式的刪除需要再輸入 yes)
rm -f 文件名,無提示直接刪除
rm -rf 文件夾

ln命令默認創建的是硬連接

ln profile a:將a硬連接到profile文件上,他們底層共用一個文件,刪除他們之中任何一個
對另外一個沒有影響,同時你也可以使用 ll -i命令查看文件編號

ln -s profile a:將a軟連接到profile文件,當你訪問a的時候會去訪問profile,profile再訪問底層文件,當將profile刪除了之後a就無法訪問了

一致時間、創建新文本
touch 已存在的文件:會將文件的訪問時間、更新時間、改變時間(即上面stat中介紹的三個時間)變成一致
touch 不存在的文件:會創建一個新的文本

cat命令查看文件內容
cat 1.txt:查看單個文件內容
cat 1.txt 2.txt:查看多個文件

more 1.txt:以分頁的形式查看文件內容,按空格:下一頁,回車:下一行(注意它不能回看,回看的話只能用滑鼠回輪)

less 1.txt:使用空格下一頁, b看上一頁, 回車看下一行
注意less的話會把整個文件內容載入到內存,如果文件比較大的話,建議使用more命令查看

head命令默認查看文件前10行內容, head 1.txt
head -5 1.txt:查看文件前5行的內容

tail命令默認查看文件後10行的內容 tail 1.txt
tail -5 1.txt:查看文件後5行內容
tail -f 1.txt:實時查看文件增量內容

cat b.txt | head -3:管道左邊的命令會以輸出流的形式交給管道右邊的命令,管道右邊以輸入流的形式接收並且拼到命令的右邊

注意:ls -l 不能接受前面的輸出流,這個怎麼辦呢?可以通過xargs命令

vi文本編輯器末行模式的操作

set nu(number的縮寫): 設置行號
set nonu(nonumber的縮寫):取消行號
set readonly:設置為只讀

n:往下查找
N:往上查找

n:往上查找
N:往下查找

一般我們會在/etc/profile文件中設置一些環境變數,但是在設置的時候可能沒有記住目錄,這時候我們可以使用如下方式

效果

格式 :s/str1/str2/gi
/ : 臨近s命令的第一個字元邊界字元,也可以是 @或#
g : 一行內全部替換
i : 忽略大小寫

范圍
n:行號
. :當前游標行
+n :偏移n行
-3
%:全文

全部刪除 1,$d

刪除前三行

刪除倒數第2行

游標挪到最後一行 按下小寫的p
效果圖

正則表達式是對字元串操作的一種邏輯公式,就是用事先定義好的一些特殊字元、及這些特定字元的組合組成一個"規則字元串",這個"規則字元串"用來表達對字元串的一種過濾邏輯。

\ :轉義字元
. :匹配任意單個字元
[1249a] :匹配中括弧中任意字元
[^12] :匹配中括弧中任意非1和2的字元
[a-k] :匹配中括弧中任意a~k中的一個字元
^ :行首
$ :行尾
<abc> :單詞首尾邊界(匹配單詞abc)
| :連接操作符
(,) : 選擇操作符
\n :反向引用

? :匹配0到1次

在Linux中通過grep命令使用正則表達式來匹配信息

f :選擇顯示的列
s :不顯示沒有分隔符的行
d :自定義分隔符

n :按數值排序
r :倒序
t :自定義分隔符
K :選擇排序列
u :合並相同行
f :忽略大小寫

sed:行編輯器,以行為單位進行處理,可以將數據進行替換、刪除、新增、選取等特定工作

sed [options] 'Command' file ...

-n :靜默模式,不再默認顯示模式空間(內存)中的內容
-i :直接修改原文件
-e SCRIPT :可以同時執行多個腳本
-f /PATH/TO/SED_SCRIPT
-r :表示使用擴展正則表達式

d :刪除符合條件的行
p :顯示符號條件的行
a \string :在指定的行後面追加新行,內容為string
\n :可以用於換行
i \string :在指定的行前面添加新行,內容為string
c :取代,c的後面可以接字元串
s /pattern/string/修飾符:查找並替換。默認只替換每行中第一次被模式匹配到的字元串
g :行內全局替換
i :忽略字元大小寫
s///:s###,s@@@
(),\1,\2

sed "2p" ctxt
但是在執行下面的操作的時候文本中的內容都顯示出來了,它的原理是,列印匹配的行,以及文本中所有的內容

注意:它刪的是內存中的數據,而不是目標文件

sed -i "3d" ctxt

它的原理是先把內存中的第3行數據刪除,然後再把內存中的數據寫回原文件,這時原文件中的第三行就沒有了

使用變數的形式

awk是一個強大的文本分析工具。
相對於grep的查找,sed的編輯,awk在其對數據分析並生成報告時,顯得尤為強大。
簡單來說awk就是把文件逐行的讀入,(空格,製表符)為默認分隔符將每行切片,切開的部分再進行各種分析處理。

awk -F '{pattern + action}' {filenames}
支持自定義分隔符,默認是以空格分隔的
支持正則表達式匹配
支持自定義變數,數組 a[1] a[tom] map(key)
支持內置變數
ARGC 命令行參數個數
ARGV 命令行參數排列
ENVIRON 支持隊列中系統環境變數的使用
FILENAME awk瀏覽的文件名
FNR 瀏覽文件的記錄數
FS 設置輸入域分隔符,等價於命令行 -F選項
NF 瀏覽記錄的域的個數
NR 已讀的記錄數
OFS 輸出域分隔符
ORS 輸出記錄分隔符
RS 控制記錄分隔符
支持函數
print、split、substr、sub、gsub
支持流程式控制制語句
if、while、do/while、for、break、continue

練習題
passwd文件內容解讀:
passwd文件中每行由7個欄位組成,欄位與欄位之間由:分隔,第一個欄位代表用戶名,第二個欄位表示用戶對應的加密後的密碼,第三個欄位表示userId,第四個欄位表示groupId,第五個欄位表示對用戶的描述,第六個欄位表示用戶的家目錄,第七個欄位表示的是這個用戶默認使用的shell

其中$0表示整行

統計報表:合計每人1月工資, 0:manager,1:worker

將awk後面的內容封裝到一個文件中(封裝的腳本要遵循一定的格式)

qqq文件的內容格式

Ⅱ linux怎樣用grep過濾

不知道你是想實現什麼目的,如果你是想只顯示配置文件中的以 # 號開頭的行版,那就使用
# grep ^# filename
如果是想顯示除權 # 號開頭的行的話呢,只需加個參數-v (-v 表示相反的過濾)就行了
# grep -v ^# filename

Ⅲ 在linux系統如何grep過濾中,不包含某些字元

1、linux系統中grep命令是一種強大的文本搜索工具,它能使用正則表達式搜索文本,並把匹配的行列印出來。grep全稱是Global Regular Expression Print,表示全局正則表達式版本,它的使用許可權是所有用戶。
2、格式
grep[options]
3、主要參數
[options]主要參數:
-c:只輸出匹配行的計數。
-I:不區分大小寫(只適用於單字元)。
-h:查詢多文件時不顯示文件名。
-l:查詢多文件時只輸出包含匹配字元的文件名。
-n:顯示匹配行及行號。
-s:不顯示不存在或無匹配文本的錯誤信息。
-v:顯示不包含匹配文本的所有行。
pattern正則表達式主要參數:
\:忽略正則表達式中特殊字元的原有含義。
^:匹配正則表達式的開始行。
$: 匹配正則表達式的結束行。
\<:從匹配正則表達式的行開始。
\>:到匹配正則表達式的行結束。
[ ]:單個字元,如[A]即A符合要求。
[ - ]:范圍,如[A-Z],即A、B、C一直到Z都符合要求。
。:所有的單個字元。
* :有字元,長度可以為0。
4、grep命令使用簡單實例:
$ grep 『test』d*
顯示所有以d開頭的文件中包含test的行。
$ grep 『test』aa bb cc
顯示在aa,bb,cc文件中匹配test的行。
$ grep『[a-z]\{5\}』 aa
顯示所有包含每個字元串至少有5個連續小寫字元的字元串的行。

Ⅳ linux grep查詢結果再過濾

令|

grep查詢過濾需要使用管道命令|。

舉例說明:

1、在進程表中查找特定進程的命令通常如專下:

Ⅳ 在linux上tshark怎麼過濾

抓Mysql包命令如下:
tshark -s 512 -i eth0 -n -f 'tcp dst port 3306' -R 'mysql.query' -T fields -e mysql.query
tshark -s 512 -i em1 -n -f 'tcp dst port 3306' -R 'mysql.query' -T fields -e mysql.query
過濾HTTP請求:
# tshark 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)' -R 'http.request.method == "GET" || http.request.method == "HEAD"'
輸出:
Running as user "root" and group "root". This could be dangerous.
Capturing on eth0
0.000000 123.126.68.27 -> 173.255.196.50 HTTP GET /grep.html HTTP/1.1
12.066470 123.126.68.27 -> 173.255.196.50 HTTP GET /pro_lang.html HTTP/1.1
-s 512 :只抓取前512個位元組數據
-i eth0 :捕獲eth0網卡
-n :禁止網路對象名稱解析
-f 'tcp dst port 3306' :只捕捉協議為tcp,目的埠為3306的數據包
-R 'mysql.query' :過濾出mysql.query
-T fields -e mysql.query :列印mysql查詢語句

tshark使用-f來指定捕捉包過濾規則,規則與tcpmp一樣,可以通過命令man pcap-filter來查得。
tshark使用-R來過濾已捕捉到的包,與界面板wireshark的左上角Filter一致。

Ⅵ 從linux指令的結果中過濾出需要的部分並寫入指定文件

Linux下可以用sed命令來向文件中自追加內容。
案例:把/etc/test1文件中1-10行內容寫入到test2中
12

sed
-n
'1,10'p
/etc/test1
>>test2#將file1的1-10行追加到file2

sed命令行格式為:sed
[-nefri]
『command』
輸入文本

常用選項:-n∶使用安靜(silent)模式;
-e∶直接在指令列模式上進行
sed
的動作編輯;
-f∶直接將
sed
的動作寫在一個檔案內;
-r∶sed
的動作支援的是延伸型正規表示法的語法;
-i∶直接修改讀取的檔案內容,而不是由螢幕輸出。

Ⅶ Linux下常用文本處理命令

Linux下常用文本處理命令大全

Linux下面有很多經典的非常有用的命令,其中處理文本的命令就有很多。下面就讓我們一起看看這些經典的Linux文本處理命令有哪些吧。

一. sort

文件排序, 通常用在管道中當過濾器來使用. 這個命令可以依據指定的關鍵字或指定的字元位置, 對文件行進行排序. 使用-m選項, 它將會合並預排序的輸入文件. 想了解這個命令的全部參數請參考這個命令的info頁.

二. tsort

拓撲排序, 讀取以空格分隔的有序對, 並且依靠輸入模式進行排序.

三. uniq

這個過濾器將會刪除一個已排序文件中的重復行. 這個命令經常出現在sort命令的管道後邊.

四. expand, unexpand

expand命令將會把每個tab轉化為一個空格. 這個命令經常用在管道中.

unexpand命令將會把每個空格轉化為一個tab. 效果與expand命令相反.

五. cut

一個從文件中提取特定域的工具. 這個命令與awk中使用的print $N命令很相似, 但是更受限. 在腳本中使用cut命令會比使用awk命令來得容易一些. 最重要的選項就是-d(欄位定界符)和-f(域分隔符)選項.

六. paste

將多個文件, 以每個文件一列的形式合並到一個文件中, 合並後文件中的每一列就是原來的一個文件. 與cut結合使用, 經常用於創建系統log文件.

七. join

這個命令與paste命令屬於同類命令. 但是它能夠完成某些特殊的目地. 這個強力工具能夠以一種特殊的形式來合並兩個文件, 這種特殊的形式本質上就是一個關聯資料庫的簡單版本.

join命令只能夠操作兩個文件. 它可以將那些具有特定標記域(通常是一個數字標簽)的行合並起來, 並且將結果輸出到stdout. 被加入的文件應該事先根據標記域進行排序以便於能夠正確的匹配.

八. head

把文件的頭部內容列印到stdout上(默認為10行, 可以自己修改). 這個命令有一些比較有趣的選項.

九. tail

將一個文件結尾部分的內容輸出到stdout中(默認為10行). 通常用來跟蹤一個系統logfile的.修改情況, 如果使用-f選項的話, 這個命令將會繼續顯示添加到文件中的行.

十. wc

wc可以統計文件或I/O流中的”單詞數量”:

十一. fold

將輸入按照指定寬度進行折行. 這里有一個非常有用的選項-s, 這個選項可以使用空格進行斷行(譯者: 事實上只有外文才需要使用空格斷行, 中文是不需要的)(請參考例子 12-23和例子 A-1).

十二. fmt

一個簡單的文件格式器, 通常用在管道中, 將一個比較長的文本行輸出進行”折行”.

十三. col

這個命令用來濾除標准輸入的反向換行符號. 這個工具還可以將空白用等價的tab來替換. col工具最主要的應用還是從特定的文本處理工具中過濾輸出, 比如groff和tbl. (譯者: 主要用來將man頁轉化為文本.)

十四. column

列格式化工具. 通過在合適的位置插入tab, 這個過濾工具會將列類型的文本轉化為”易於列印”的表格式進行輸出.

十五. colrm

列刪除過濾器. 這個工具將會從文件中刪除指定的列(列中的字元串)並且寫到文件中, 如果指定的列不存在, 那麼就回到stdout. colrm 2 4 <filename將會刪除filename文件中每行的第2到第4列之間的所有字元. p=""> </filename將會刪除filename文件中每行的第2到第4列之間的所有字元.>

Caution: 如果這個文件包含tab和不可列印字元, 那將會引起不可預期的行為. 在這種情況下, 應該通過管道的手段使用expand和unexpand來預處理colrm.

十六. nl

計算行號過濾器. nl filename將會把filename文件的所有內容都輸出到stdout上, 但是會在每個非空行的前面加上連續的行號. 如果沒有filename參數, 那麼就操作stdin.

nl命令的輸出與cat -n非常相似, 然而, 默認情況下nl不會列出空行.

十七. pr

格式化列印過濾器. 這個命令會將文件(或stdout)分頁, 將它們分成合適的小塊以便於硬拷貝列印或者在屏幕上瀏覽. 使用這個命令的不同的參數可以完成好多任務, 比如對行和列的操作, 加入行, 設置頁邊, 計算行號, 添加頁眉, 合並文件等等. pr命令集合了許多命令的功能, 比如nl, paste, fold, column, 和expand.

pr -o 5 –width=65 fileZZZ | more 這個命令對fileZZZ進行了比較好的分頁, 並且列印到屏幕上. 文件的縮進被設置為5, 總寬度設置為65.

一個非常有用的選項-d, 強制隔行列印(與sed -G效果相同).

十八. gettext

GNU gettext包是專門用來將程序的輸出翻譯或者本地化為不同國家語言的工具集. 在最開始的時候僅僅支持C語言, 現在已經支持了相當數量的其它程序語言和腳本語言.

想要查看gettext程序如何在shell腳本中使用. 請參考info頁.

十九. msgfmt

一個產生二進制消息目錄的程序. 這個命令主要用來本地化.

二十. iconv

一個可以將文件轉化為不同編碼格式(字元集)的工具. 這個命令主要用來本地化.

二十一. recode

可以認為這個命令是上邊iconv命令的專業版本. 這個非常靈活的並可以把整個文件都轉換為不同編碼格式的工具並不是Linux標准安裝的一部分.

二十二. TeX, gs

TeX和Postscript都是文本標記語言, 用來對列印和格式化的視頻顯示進行預拷貝.

TeX是Donald Knuth精心製作的排版系統. 通常情況下, 通過編寫腳本的手段來把所有的選項和參數封裝起來一起傳到標記語言中是一件很方便的事情.

Ⅷ 如何關閉linux系統中的覆蓋輸出重定向功能

Linux下默認有兩種輸出流:
1 - 標准輸出流
2 - 標准錯誤輸出流
Linux下一切皆文件,這里的1和2表示的就是輸出設備文件的文件描述符。
默認情況下,無論是標准輸出還是標准錯誤輸出,都是輸出到終端顯示的。
但也可以通過重定向輸出到其他地方,如文件。這就是輸出重定向。
並且,這兩種輸出流可以被分別重定向。

下面舉例:
假設文件file.txt在當前目錄下並不存在,執行下面的命令:
ls file.txt 2>log.txt

這樣就將錯誤輸出重定向到文件log.txt中。

ls file.txt 2>/dev/null

這樣就什麼都看不到,將標准錯誤輸出流重定向到/dev/null中,丟棄了。

ls file.txt >/dev/null

只將標准輸出重定向到/dev/null中,這樣仍然可以在終端窗口看到錯誤輸出。

註:>/dev/null 等同於 1>/dev/null,前面的1可省略。

Ⅸ linux怎麼將傳入流量過濾到UDP埠5353。

答:cmd netstat -an 用本地連接-TCP/IP-高級-選項-TCP/IP篩選,啟用篩選機制來篩選埠;

Ⅹ 如何通過linux命令根據某一列值唯一來過濾數據

你可以這樣做:
(1)為Server的那些使用者建立單獨的賬戶,例如:user01、user02....等等(可以給每個人建立一個單獨的賬戶。當然,為了使系統中的賬戶不至於太多而導致難以管理,也可以按照他們所在的部門、項目組(或工作組)、或是其它分類方式去建立賬戶)。
(2)對每個賬戶下的$HOME/.profile文件或者是$HOME/.cshrc文件(視不同用戶的SHELL來決定,例如:bsh和sh就是.profile,csh就是.cshrc),用
chown
root:root
...
(例如:
chown
root:root
.cshrc)
命令將它們改成root用戶及屬組所有,只有root用戶才可以更改它們。
(3)在每個用戶的$HOME/.profile或是$HOME/.cshrc等shell環境配置文件中,將你認為是危險的命令做以下的轉換:
alias
命令名='echo
管理員不運行執行該命令'
例如:
alias
format='echo
管理員不運行執行該命令'
這樣這些用戶就無法執行你限定的命令,執行之後都顯示「管理員不運行執行該命令」。
如果覺得改.profile或是.cshrc文件不保險,還可以在每個用戶的$HOME下建立.login文件,也用上述的方法將它改成root用戶屬組的,在裡面加入
alias
命令名='echo
管理員不運行執行該命令'
效果更好。
----看到了你的問題追加。我覺得要是大家都只能使用root賬戶,那麼這個系統的規劃是否合理?假如一定都要使用root賬戶的話,對於每個用戶在鍵入命令的過程中,你很難去捕獲他們都正在敲入什麼命令。只有等他們在命令行上都輸入完了,回車確認之後才可能去發現他們執行的進程。假如真有這樣的一個監控程序在你的系統中,就算是監控到了,那麼那些進程已經開始運行了,對很多人來說已經是無法收拾了,只有及時的殺掉那些進程了。建議你把敏感的命令給rename了算了,例如mv
format
frmt
----呵呵,你也夠執著的。既然一定要寫個程序,那我就說說大概的思路吧!具體的程序代碼你可以自己去寫,這樣也有些成就感。:)
不過我能保證,就算採用這樣的做法也不會取得什麼好的效果,尤其是大家都使用root賬戶。我用unix類操作系統近十年,聽我一句勸告不會有什麼害處啊!
程序思路:
(1)定義你的敏感命令列表(可以賦值給一個字元串數組)。
(2)獲取你本人在系統中當前的tty編號,以及你自己的IP地址(你是從哪個IP地址發起的telnet?如果你本人使用Console,也需要如此)。
(3)按照你的敏感命令列表,循環檢測除了自己的tty及IP地址之外的,其它tty及IP地址發起的敏感命令進程,如果發現,立即予以kill
-9。並向相應的tty發送警告信息。
注意:這個循環是無限循環;這個程序是一個守護進程(Daemon)。除非接到進程中止信號,否則它將一直運行。這樣做的缺點是,循環檢測並殺掉那些敏感進程的過程並不能確保實時性,在發現相應的進程時,那些進程可能已經運行了一小段時間,盡管這段時間非常非常的短,但是也可能已經產生了效力甚至是危害。不過,這也是沒辦法的事情了。誰要你非要這樣呢?

閱讀全文

與linux過濾輸出流相關的資料

熱點內容
含油污水屬於危廢 瀏覽:455
空調回風口有去離子 瀏覽:372
臨夏市污水處理廠工程 瀏覽:88
如何快速安裝汽車空調濾芯 瀏覽:741
PCB中樹脂塞孔表面 瀏覽:201
凈水器怎麼關掉熱水 瀏覽:72
4040ro膜需要多少公斤壓力 瀏覽:746
邁騰機油濾芯怎麼判斷 瀏覽:624
二級反滲透運行不穩定原因 瀏覽:215
美的凈水器怎麼裝 瀏覽:639
志高凈水器的濾芯是怎麼換的 瀏覽:209
裝機油濾芯的叫什麼 瀏覽:463
廈門煉化廠污水除臭多少錢 瀏覽:239
成都反滲透設備廠賽達水處理 瀏覽:261
泵是輸送和提升液體的機器 瀏覽:316
麗水超值超濾膜廠家 瀏覽:38
煙凈化器多少錢一個 瀏覽:34
污水池防水毯哪裡有 瀏覽:397
台式飲水機怎麼打開 瀏覽:284
關於鄉村污水整治的申請報告 瀏覽:867