當前位置:首頁 » 凈水方式 » linux過濾行

linux過濾行

發布時間: 2021-01-02 22:36:55

① Linux:刪除某文件中的指定行,求解

可以用下面腳本的方法刪除某文件的指定行

#!/bin/sh
FILENAME=file.txt # 可換為$1

if [ ! -f file.txt ];then
echo "$FILENAME no found"
exit 1
fi
echo -n "INPUT SOME THING: "
read
if [ ! -z 」$REPLY「 ];then
INFO=$(grep $REPLY FILENAME)
if [ ! -z "$INFO" ] ; then
sed -i -e '/$REPLY/d' FILENAME #刪除只用這行就可以了
else
echo "沒有指定內容的信息"
exit 1
fi
else
echo "input some thing"
exit 1
fi
exit $?
1. ============》》》添加 用sed在文檔中間指定行後增加一行有時候我們會用腳本,來修改文檔,比如在文檔中增加一行或減少一行
echo "1";
echo "2";
echo "4";
echo "5";如上例子,想要在echo "2";後面加上一條echo "3";可以用如下命令sed -i '/echo \"2\";/a\echo \"3\";' test.sh
之所以用分號,是因為文本中本來就有。也就是說分號不是必須的!抽象出來就是: sed -i '/* /a*' filename
2. ============》》》刪除 sed 刪除文件中的一行內容Linux shell腳本 刪除文件中的一行內容

比如:在1.txt里有以下內容:
HELLO=1
NI=2
WORLD=3
I Love China.
Love all
....

如果是要刪除第三行:
sed -i '3d' 1.txt

如果刪除以Love開頭的行
sed -i '/^Love/d' 1.txt

刪除包含Love的行
sed -i '/Love/d' 1.txt

② 如何去掉linux配置文件的注釋行和空行

1、使用grep -v "^#" 來去掉注釋行,其中:-v 就是取相反的 ^# 表示以#開頭的行
eg. grep -v "^#" /etc/vsftpd/vsftpd.conf (也可以使用版「>」來重寫權配置文件)
2、有時也會連同空行一起去掉,使用管道符來完成(^$表示空行 )
eg. grep -v "^#" httpd.conf | grep -v "^$" >> vsftpd.conf
上面用了 2次 grep 過濾命令 ,也就是把空行和註解行過濾掉,再把剩下的內容追加保存為原
來的配置文件 vsftpd.conf 這個時候就文件里的內容就沒有註解行和空行了,,,,
3、備註:在更改配置文件時,建議先對配置文件做一下備份,對配置文件不熟悉的建議不要用這種方法,配置文件中的註解行還是有一定的幫助的。
cp -a httpd.conf httpd.conf.bak

③ 在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打開文件按每行的第一個單詞過濾

您能說的再具體抄一點嗎?我的理解是「只保留開頭單詞相同的行」但是你這個「相同」是
①全文只保留某一個單詞開頭的行
還是說
②有n個aaa開頭的保留,m個bbb開頭的保留
如果是①grep "相同部分*" 文件名 這樣就過濾出開頭相同的行了,隨便 > 到一個新建文件里在改名或導入都行
如果是②就比較麻煩了得寫一個腳本

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

你可以這樣做:
(1)為Server的那些使用者建立單獨的賬戶,例如:user01、....等等(可以給每個人建立一個單獨的賬戶。當然,為了使系統中的賬戶不至於太多而導致難以管理,也可以按照他們所在的部門、項目組(或工作組)、或是其它分類方式去建立賬戶)。
(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怎麼查看指定行的日誌

先必須了解兩個最基本的命令:
tail -n 10 test.log 查詢日誌尾部最後行的日誌;
tail -n +10 test.log 查詢10行之後的所有日誌;
head -n 10 test.log 查詢日誌文件中的頭10行日誌;
head -n -10 test.log 查詢日誌文件除了最後10行的其他所有日誌;

場景1: 按行號查看---過濾出關鍵字附近的日誌
因為通常時候我們用grep拿到的日誌很少,我們需要查看附近的日誌.
我是這樣做的,首先: cat -n test.log |grep "地形" 得到關鍵日誌的行號

<3>得到"地形"關鍵字所在的行號是102行. 此時如果我想查看這個關鍵字前10行和後10行的日誌:
cat -n test.log |tail -n +92|head -n 20
tail -n +92表示查詢92行之後的日誌
head -n 20 則表示在前面的查詢結果里再查前20條記錄

場景2:那麼按日期怎麼查呢? 通常我們非常需要查找指定時間端的日誌
sed -n '/2014-12-17 16:17:20/,/2014-12-17 16:17:36/p' test.log
特別說明:上面的兩個日期必須是日誌中列印出來的日誌,否則無效.

關於日期列印,可以先 grep '2014-12-17 16:17:20' test.log 來確定日誌中是否有該時間點,以確保第4步可以拿到日誌
這個根據時間段查詢日誌是非常有用的命令.
如果我們查找的日誌很多,列印在屏幕上不方便查看, 有兩個方法:
(1)使用more和less命令, 如: cat -n test.log |grep "地形" |more 這樣就分頁列印了,通過點擊空格鍵翻頁
(2)使用 >xxx.txt 將其保存到文件中,到時可以拉下這個文件分析.如:
cat -n test.log |grep "地形" >xxx.txt

7
這幾個日誌查看方法應該可以滿足日常需求了.

⑦ 在Linux系統中如何篩選出一個文件只能夠以a開頭的行

直接使用通配符。

ls la*。

這是一種方法,*表示匹配任何長度的任意字元,通過這樣的方專式就可以查找到所有以屬ls開頭的文件,如果我們想查找文件名中含有la的文件,只需輸入「ls *la*」即可。


(7)linux過濾行擴展閱讀:

ls 指令是Linux下最常用的指令之一。

ls 命令將每個由 Directory 參數指定的目錄或者每個由 File 參數指定的名稱寫到標准輸出,以及您所要求的和標志一起的其它信息。

運用舉例:

1、列出具體文件 #ls -al //這個最常用,可是往往又不徹底符合要求,

2、列出一切子目錄的文件:#ls -R //上個指令僅僅列出了本目錄下的一切目錄和文件,可是目錄下的文件不會循環的列出。

⑧ linux過濾關鍵字的下一行,這個命令怎麼寫

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個連續小寫字元的字元串的行。
$ grep 『w\(es\)t.*\1′ aa
如果west被匹配,則es就被存儲到內存中,並標記為1,然後搜索任意個字元(.*),這些字元後面緊跟著 另外一個es(\1),找到就顯示該行。如果用egrep或grep -E,就不用」\」號進行轉義,直接寫成』w(es)t.*\1′就可以了。
5.grep命令使用復雜實例
假設您正在』/usr/src/Linux/Doc』目錄下搜索帶字元 串』magic』的文件:
$ grep magic /usr/src/Linux/Doc/*
sysrq.txt:* How do I enable the magic SysRQ key?
sysrq.txt:* How do I use the magic SysRQ key?
其中文件』sysrp.txt』包含該字元串,討論的是 SysRQ 的功能。
默認情況下,』grep』只搜索當前目錄。如果 此目錄下有許多子目錄,』grep』會以如下形式列出:
grep: sound: Is a directory
這可能會使』grep』 的輸出難於閱讀。這里有兩種解決的辦法:
明確要求搜索子目錄:grep -r
或忽略子目錄:grep -d skip
如果有很多 輸出時,您可以通過管道將其轉到』less』上閱讀:
$ grep magic /usr/src/Linux/Documentation/* | less
這樣,您就可以更方便地閱讀。
有一點要注意,您必需提供一個文件過濾方式(搜索全部文件的話用 *)。如果您忘了,』grep』會一直等著,直到該程序被中斷。如果您遇到了這樣的情況,按 <CTRL c> ,然後再試。
下面還有一些有意思的命令行參數:
grep -i pattern files :不區分大小寫地搜索。默認情況區分大小寫,

⑨ linux怎樣用grep過濾

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

⑩ linux中怎麼去除只包含某個字元的行

只包含來和包含的源含義不一樣哦。
只包含
sed "/^-$/d" a.txt > tmp.txt
包含
sed "/-/d" a.txt > tmp.txt

tmp.txt就是你要的文件.

t:root:/tmp> sed "/^-$/d" a.txt
abc - def
ghi
jik
- abd
ggg
t:root:/tmp> sed "/-/d" a.txt
ghi
jik
ggg
t:root:/tmp> cat a.txt
-
abc - def
ghi
jik
-
- abd
ggg

熱點內容
丁度巴拉斯情人電影推薦 發布:2024-08-19 09:13:07 瀏覽:886
類似深水的露點電影 發布:2024-08-19 09:10:12 瀏覽:80
《消失的眼角膜》2電影 發布:2024-08-19 08:34:43 瀏覽:878
私人影院什麼電影好看 發布:2024-08-19 08:33:32 瀏覽:593
干 B 發布:2024-08-19 08:30:21 瀏覽:910
夜晚看片網站 發布:2024-08-19 08:20:59 瀏覽:440
台灣男同電影《越界》 發布:2024-08-19 08:04:35 瀏覽:290
看電影選座位追女孩 發布:2024-08-19 07:54:42 瀏覽:975
日本a級愛情 發布:2024-08-19 07:30:38 瀏覽:832
生活中的瑪麗類似電影 發布:2024-08-19 07:26:46 瀏覽:239