鳥哥的 Linux 私房菜-新手討論區

特別適合 Linux 新手的討論區
鳥哥的 Linux 私房菜首頁 | 鳥哥 / Study Area 主站特搜 | Study Area | 酷!學園 討論區
新手發文時必看之:鳥園的文章管理規則提問的智慧, 簡繁體轉換的問題
現在的時間是 2010-09-03 17:35

所有顯示的時間為 UTC + 8 小時




發表新文章 回覆主題  [ 28 篇文章 ] 
發表人 內容
 文章主題 : linux_basic『正規表示法 Regular Expression, RE』討論串
文章發表於 : 2006-02-20 14:55 
離線
站長鳥哥
站長鳥哥

註冊時間: 2002-06-09 23:45
文章: 8464
來自: 南台灣
這個討論串是針對底下文章來的:
http://linux.vbird.org/linux_basic/0330regularex.php

歡迎大家針對上文有任何意見,能夠在這個討論串內留言。

_________________
解決問題的順序:
1. 先查閱硬體(有沒有超頻/記憶體模組/周邊網路設備的好壞等等);
2. 檢查 /var/log 底下的登錄檔,尤其是 /var/log/messages 的內容;
3. 不要急,先翻書瞭解相關問題的原理,再設法解決~
4. 利用關鍵字,在 www.google.com.tw 查閱是否有人已經遇過類似的問題?
5. 都沒有辦法了,再在討論區以明確的標題以及重要的資訊貼成內文來發問啦!


回頂端
 個人資料  
 
 文章主題 :
文章發表於 : 2007-06-26 09:09 
離線
初來乍到小菜鳥
初來乍到小菜鳥

註冊時間: 2007-06-04 13:00
文章: 2
來自: 安徽
首先表示非常感谢鸟哥的这些文章。

这篇文章中有个笔误,如下:
================
例題二、利用 [] 來搜尋集合字元
如果我想要搜尋 test 或 taste 這兩個單字時,可以發現到,其實她們有共通的 't?st' 存在~這個時候,我可以這樣來搜尋:

=============
“test 或 taste” 应为 “test 或 tast ” 。

_________________
study


回頂端
 個人資料  
 
 文章主題 :
文章發表於 : 2007-06-26 10:24 
離線
站長鳥哥
站長鳥哥

註冊時間: 2002-06-09 23:45
文章: 8464
來自: 南台灣
您好:

謝謝您的留言,其實是這個例子取的不好!因為我突然找不到相同字元數的英文,
所以只得找 test (測試) 與 taste (嚐起來) 這兩個字。
因為 tast 是沒有意義的,所以才使用 taste 喔!

_________________
解決問題的順序:
1. 先查閱硬體(有沒有超頻/記憶體模組/周邊網路設備的好壞等等);
2. 檢查 /var/log 底下的登錄檔,尤其是 /var/log/messages 的內容;
3. 不要急,先翻書瞭解相關問題的原理,再設法解決~
4. 利用關鍵字,在 www.google.com.tw 查閱是否有人已經遇過類似的問題?
5. 都沒有辦法了,再在討論區以明確的標題以及重要的資訊貼成內文來發問啦!


回頂端
 個人資料  
 
 文章主題 :
文章發表於 : 2007-08-08 20:37 
離線
熱情有勁的大鳥
熱情有勁的大鳥

註冊時間: 2007-01-15 18:59
文章: 244
來自: Yamagata, Japan
關於sed
可以加入一些sed對單一文字檔內文字進行置換等的介紹
像是

利用sed進行單一字母置換
sed -e 'y/舊字母/新字母/' inputfile > outputfile
同時多個字母互相代換(產生簡單密碼文章用?)
sed -e 'y/a/C/' inputfile > outputfile
sed -e 'y/>/K/' inputfile > outputfile
sed -e 'y/g/%/' inputfile > outputfile
可以寫成
sed -e 'y/a>g/CK%/' inputfile > outputfile

利用sed進行字串置換
sed -e 's/old/new/g' inputfile > outputfile

以上指令將-e換成-i之後,會直接將結果置換到原檔案中,不需再導向stdout至新檔案

_________________
- iStyle, myStyle -


回頂端
 個人資料  
 
 文章主題 :
文章發表於 : 2007-08-09 00:09 
離線
站長鳥哥
站長鳥哥

註冊時間: 2002-06-09 23:45
文章: 8464
來自: 南台灣
真是好樣的!

不過我對第二個作法比較有疑問,
那個作法不是會變成:尋找 a>g 置換成 CK% 嗎?
我是還沒有測試過,不過直覺上,會覺得好像是如此。

_________________
解決問題的順序:
1. 先查閱硬體(有沒有超頻/記憶體模組/周邊網路設備的好壞等等);
2. 檢查 /var/log 底下的登錄檔,尤其是 /var/log/messages 的內容;
3. 不要急,先翻書瞭解相關問題的原理,再設法解決~
4. 利用關鍵字,在 www.google.com.tw 查閱是否有人已經遇過類似的問題?
5. 都沒有辦法了,再在討論區以明確的標題以及重要的資訊貼成內文來發問啦!


回頂端
 個人資料  
 
 文章主題 :
文章發表於 : 2007-08-09 17:04 
離線
熱情有勁的大鳥
熱情有勁的大鳥

註冊時間: 2007-01-15 18:59
文章: 244
來自: Yamagata, Japan
第二個做法我也還沒試過,
那是從日本的wiki裡面翻出來的sed指令介紹中的東西
不過大家實際還是比較常用字串置換吧

_________________
- iStyle, myStyle -


回頂端
 個人資料  
 
 文章主題 :
文章發表於 : 2007-08-09 22:49 
離線
站長鳥哥
站長鳥哥

註冊時間: 2002-06-09 23:45
文章: 8464
來自: 南台灣
老實說,您說的沒錯呢! ^_^

_________________
解決問題的順序:
1. 先查閱硬體(有沒有超頻/記憶體模組/周邊網路設備的好壞等等);
2. 檢查 /var/log 底下的登錄檔,尤其是 /var/log/messages 的內容;
3. 不要急,先翻書瞭解相關問題的原理,再設法解決~
4. 利用關鍵字,在 www.google.com.tw 查閱是否有人已經遇過類似的問題?
5. 都沒有辦法了,再在討論區以明確的標題以及重要的資訊貼成內文來發問啦!


回頂端
 個人資料  
 
 文章主題 :
文章發表於 : 2007-12-05 14:42 
離線
初來乍到小菜鳥
初來乍到小菜鳥

註冊時間: 2007-11-05 17:10
文章: 6
你好,

如果我不想要開頭是英文字母,則可以是這樣 :


书:
[root@test root]# grep -n '^[^a-zA-Z]' regular_express.txt
1:"Open Source" is a good mechanism to develop programs.
20:# I am VBird

我:
[root@test root]# grep -nv '^[a-zA-Z]' regular_express.txt
1:"Open Source" is a good mechanism to develop programs.
20:# I am VBird
21:


从实际结果来看, 后者应该是对的. 但, 从逻辑上分析, 两种方式的结果应该相同(为后者结果)


请鸟哥帮忙看看~~~~


回頂端
 個人資料  
 
 文章主題 :
文章發表於 : 2007-12-05 16:00 
離線
站長鳥哥
站長鳥哥

註冊時間: 2002-06-09 23:45
文章: 8464
來自: 南台灣
推測可能是語系方面的問題,造成編碼方面的不同所致。

_________________
解決問題的順序:
1. 先查閱硬體(有沒有超頻/記憶體模組/周邊網路設備的好壞等等);
2. 檢查 /var/log 底下的登錄檔,尤其是 /var/log/messages 的內容;
3. 不要急,先翻書瞭解相關問題的原理,再設法解決~
4. 利用關鍵字,在 www.google.com.tw 查閱是否有人已經遇過類似的問題?
5. 都沒有辦法了,再在討論區以明確的標題以及重要的資訊貼成內文來發問啦!


回頂端
 個人資料  
 
 文章主題 :
文章發表於 : 2007-12-05 16:03 
離線
初來乍到小菜鳥
初來乍到小菜鳥

註冊時間: 2007-11-05 17:10
文章: 6
那两种方式都正确?


回頂端
 個人資料  
 
 文章主題 :
文章發表於 : 2007-12-05 16:29 
離線
站長鳥哥
站長鳥哥

註冊時間: 2002-06-09 23:45
文章: 8464
來自: 南台灣
報告!是!!

_________________
解決問題的順序:
1. 先查閱硬體(有沒有超頻/記憶體模組/周邊網路設備的好壞等等);
2. 檢查 /var/log 底下的登錄檔,尤其是 /var/log/messages 的內容;
3. 不要急,先翻書瞭解相關問題的原理,再設法解決~
4. 利用關鍵字,在 www.google.com.tw 查閱是否有人已經遇過類似的問題?
5. 都沒有辦法了,再在討論區以明確的標題以及重要的資訊貼成內文來發問啦!


回頂端
 個人資料  
 
 文章主題 :
文章發表於 : 2008-11-20 16:03 
離線
初來乍到小菜鳥
初來乍到小菜鳥

註冊時間: 2008-11-18 15:07
文章: 4
鸟哥,继续提问:
我的grep好像默认把“忽略大小写”给打开了

我该怎么才能把这个“默认打开”关闭啊?


回頂端
 個人資料  
 
 文章主題 :
文章發表於 : 2008-11-21 12:57 
離線
站長鳥哥
站長鳥哥

註冊時間: 2002-06-09 23:45
文章: 8464
來自: 南台灣
這個可能要 man 一下了,為什麼會預設將忽略大小寫打開?
可能需要 alias 看看有沒有 grep 的命令別名吧!

_________________
解決問題的順序:
1. 先查閱硬體(有沒有超頻/記憶體模組/周邊網路設備的好壞等等);
2. 檢查 /var/log 底下的登錄檔,尤其是 /var/log/messages 的內容;
3. 不要急,先翻書瞭解相關問題的原理,再設法解決~
4. 利用關鍵字,在 www.google.com.tw 查閱是否有人已經遇過類似的問題?
5. 都沒有辦法了,再在討論區以明確的標題以及重要的資訊貼成內文來發問啦!


回頂端
 個人資料  
 
 文章主題 :
文章發表於 : 2009-02-11 12:25 
離線
初來乍到小菜鳥
初來乍到小菜鳥

註冊時間: 2009-02-06 16:43
文章: 11
引言回覆:
grep 已經使用 alias 設定成為『 grep --color=auto 』


我用 Fedora 10

把 alias grep='grep --color=auto' 寫入 /etc/bashrc 中才不致於重新開機就沒有了設定. 順便一看 bashrc 的內容, 卻竟然不見其他預設的 alias. 在~/.profile, ~/.bashrc 等等都找不到. 為什麼?


回頂端
 個人資料  
 
 文章主題 :
文章發表於 : 2009-02-11 12:44 
離線
初來乍到小菜鳥
初來乍到小菜鳥

註冊時間: 2009-02-06 16:43
文章: 11
我是 LINUX 初哥, 從鳥哥的網站中獲益良多. 我看到網站的例子有很多英文語法錯誤, (差不多每行都有) 當然想提醒一下, 回饋網站.

原文 寫:
[root@www ~]# vi regular_express.txt
"Open Source" is a good mechanism to develop programs.
apple is my favorite food.
Football game is not use feet only.
this dress doesn't fit me.
However, this dress is about $ 3183 dollars.^M
GNU is free air not free beer.^M
Her hair is very beauty.^M
I can't finish the test.^M
Oh! The soup taste good.^M
motorcycle is cheap than car.
This window is clear.
the symbol '*' is represented as start.
Oh! My god!
The gd software is a library for drafting programs.^M
You are the best is mean you are the no. 1.
The world <Happy> is the same with "glad".
I like dog.
google is the best tools for search keyword.
goooooogle yes!
go! go! Let's go.
# I am VBird


回頂端
 個人資料  
 
 文章主題 :
文章發表於 : 2009-02-11 13:29 
離線
站長鳥哥
站長鳥哥

註冊時間: 2002-06-09 23:45
文章: 8464
來自: 南台灣
lurker 寫:
引言回覆:
grep 已經使用 alias 設定成為『 grep --color=auto 』


我用 Fedora 10

把 alias grep='grep --color=auto' 寫入 /etc/bashrc 中才不致於重新開機就沒有了設定. 順便一看 bashrc 的內容, 卻竟然不見其他預設的 alias. 在~/.profile, ~/.bashrc 等等都找不到. 為什麼?

您好, 別擔心, 你可能須要到 /etc/profile 搜尋所有的檔案後, 才能知道這些社定放在那裡.
不過, 你也可以手動自行加入所有你要的設定值啊

_________________
解決問題的順序:
1. 先查閱硬體(有沒有超頻/記憶體模組/周邊網路設備的好壞等等);
2. 檢查 /var/log 底下的登錄檔,尤其是 /var/log/messages 的內容;
3. 不要急,先翻書瞭解相關問題的原理,再設法解決~
4. 利用關鍵字,在 www.google.com.tw 查閱是否有人已經遇過類似的問題?
5. 都沒有辦法了,再在討論區以明確的標題以及重要的資訊貼成內文來發問啦!


回頂端
 個人資料  
 
 文章主題 :
文章發表於 : 2009-02-11 23:06 
離線
站長鳥哥
站長鳥哥

註冊時間: 2002-06-09 23:45
文章: 8464
來自: 南台灣
lurker 寫:
我是 LINUX 初哥, 從鳥哥的網站中獲益良多. 我看到網站的例子有很多英文語法錯誤, (差不多每行都有) 當然想提醒一下, 回饋網站.
您好:
文法確實是有問題的!不過,該資料僅是作為正規表示法的練習之用!
其他無傷大雅的地方,還請多多見諒!

_________________
解決問題的順序:
1. 先查閱硬體(有沒有超頻/記憶體模組/周邊網路設備的好壞等等);
2. 檢查 /var/log 底下的登錄檔,尤其是 /var/log/messages 的內容;
3. 不要急,先翻書瞭解相關問題的原理,再設法解決~
4. 利用關鍵字,在 www.google.com.tw 查閱是否有人已經遇過類似的問題?
5. 都沒有辦法了,再在討論區以明確的標題以及重要的資訊貼成內文來發問啦!


回頂端
 個人資料  
 
 文章主題 :
文章發表於 : 2009-02-12 02:18 
離線
初來乍到小菜鳥
初來乍到小菜鳥

註冊時間: 2009-02-06 16:43
文章: 11
VBird 寫:
您好, 別擔心, 你可能須要到 /etc/profile 搜尋所有的檔案後, 才能知道這些社定放在那裡.
不過, 你也可以手動自行加入所有你要的設定值啊


謝謝鳥哥回應^^

在 /etc/profile.d/* 找到了 ll 等預設的 alias. 不過 cp , rm 等卻找不到.

怎樣才可尋找 setup 這個 package 內的所有內容呢? 以下是不成功的.

[root@localhost ~]# rpm -ql setup |grep -R alias -
/etc/aliases


回頂端
 個人資料  
 
 文章主題 :
文章發表於 : 2009-02-12 20:05 
離線
站長鳥哥
站長鳥哥

註冊時間: 2002-06-09 23:45
文章: 8464
來自: 南台灣
你要找所有內容嗎?那可能需要找出設定檔,然後再以 cat 去讀取內容!
這樣才能夠取得吧!
你上面的指令只能找出檔名而已。

_________________
解決問題的順序:
1. 先查閱硬體(有沒有超頻/記憶體模組/周邊網路設備的好壞等等);
2. 檢查 /var/log 底下的登錄檔,尤其是 /var/log/messages 的內容;
3. 不要急,先翻書瞭解相關問題的原理,再設法解決~
4. 利用關鍵字,在 www.google.com.tw 查閱是否有人已經遇過類似的問題?
5. 都沒有辦法了,再在討論區以明確的標題以及重要的資訊貼成內文來發問啦!


回頂端
 個人資料  
 
 文章主題 :
文章發表於 : 2009-02-19 22:02 
離線
初來乍到小菜鳥
初來乍到小菜鳥

註冊時間: 2009-02-19 11:36
文章: 4
2.5节的关于sed命令的 搜索并取代 的步骤三与四:
步驟三:將 IP 前面的部分予以刪除
[root@www ~]# /sbin/ifconfig eth0 | grep 'inet addr' | \
> sed 's/^.*addr://g'
192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0
# 仔細與上個步驟比較一下,前面的部分不見了!接下來則是刪除後續的部分,亦即:
# 192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0
# 此時所需的正規表示法為:『 Bcast.*$ 』就是啦!

步驟四:將 IP 後面的部分予以刪除
[root@www ~]# /sbin/ifconfig eth0 | grep 'inet addr' | \
> sed 's/^.*addr://g' | sed 's/Bcast.*$//g'
192.168.1.100

三中的那个^和四中$是否可以去掉呢?应该 .* 已经可以代表了该行的addr之前的所有的字元以及Bcast之后的子元了,不知道是否可以呢??(我自己试了一下结果好像是一样的 )


回頂端
 個人資料  
 
 文章主題 :
文章發表於 : 2009-02-20 17:33 
離線
站長鳥哥
站長鳥哥

註冊時間: 2002-06-09 23:45
文章: 8464
來自: 南台灣
就我的感覺來說,正規表示法有些部分越嚴謹越好!
因為加上 ^ 與 $ 可以較完整的指定出所想要取代的位置,
個人認為,不論能否將資料確定的顯示出來,
瞭解一下比較正確的作法,應該會比較好呢!您覺得呢? ^_^

_________________
解決問題的順序:
1. 先查閱硬體(有沒有超頻/記憶體模組/周邊網路設備的好壞等等);
2. 檢查 /var/log 底下的登錄檔,尤其是 /var/log/messages 的內容;
3. 不要急,先翻書瞭解相關問題的原理,再設法解決~
4. 利用關鍵字,在 www.google.com.tw 查閱是否有人已經遇過類似的問題?
5. 都沒有辦法了,再在討論區以明確的標題以及重要的資訊貼成內文來發問啦!


回頂端
 個人資料  
 
 文章主題 :
文章發表於 : 2009-02-21 21:24 
離線
初來乍到小菜鳥
初來乍到小菜鳥

註冊時間: 2009-02-19 11:36
文章: 4
VBird 寫:
就我的感覺來說,正規表示法有些部分越嚴謹越好!
因為加上 ^ 與 $ 可以較完整的指定出所想要取代的位置,
個人認為,不論能否將資料確定的顯示出來,
瞭解一下比較正確的作法,應該會比較好呢!您覺得呢? ^_^


呵呵,非常同意!继续学习,继续Debug……鸟哥要加油更新呢!!


回頂端
 個人資料  
 
 文章主題 :
文章發表於 : 2009-02-22 22:08 
離線
站長鳥哥
站長鳥哥

註冊時間: 2002-06-09 23:45
文章: 8464
來自: 南台灣
我....繼續加油!
不過,就怕沒時間!

啊!實在很懷念那個拼命研究拼命寫文章的年代!

_________________
解決問題的順序:
1. 先查閱硬體(有沒有超頻/記憶體模組/周邊網路設備的好壞等等);
2. 檢查 /var/log 底下的登錄檔,尤其是 /var/log/messages 的內容;
3. 不要急,先翻書瞭解相關問題的原理,再設法解決~
4. 利用關鍵字,在 www.google.com.tw 查閱是否有人已經遇過類似的問題?
5. 都沒有辦法了,再在討論區以明確的標題以及重要的資訊貼成內文來發問啦!


回頂端
 個人資料  
 
 文章主題 : Re: linux_basic『正規表示法 Regular Expression, RE』討論串
文章發表於 : 2010-06-26 09:16 
離線
初來乍到小菜鳥
初來乍到小菜鳥

註冊時間: 2010-06-23 12:26
文章: 0
鸟哥,你好!
在介绍awk的时候有个不是错误的错误
columes的拼写应该是columns。


回頂端
 個人資料  
 
 文章主題 : Re: linux_basic『正規表示法 Regular Expression, RE』討論串
文章發表於 : 2010-06-26 10:26 
離線
初來乍到小菜鳥
初來乍到小菜鳥

註冊時間: 2010-06-23 12:26
文章: 0
鸟哥,你好!
在 “awk 的邏輯運算字元” 这个单元中
你讲解的这个例子:

cat pay.txt | \
> awk 'NR==1{printf "%10s %10s %10s %10s %10s\n",$1,$2,$3,$4,"Total" }
NR>=2{total = $2 + $3 + $4
printf "%10s %10d %10d %10d %10.2f\n", $1, $2, $3, $4, total}'

你提到:

awk 的指令間隔:所有 awk 的動作,亦即在 {} 內的動作,如果有需要多個指令輔助時,可利用分號『;』間隔, 或者直接以 [Enter] 按鍵來隔開每個指令,例如上面的範例中,鳥哥共按了三次 [enter] 喔!

小弟的linux核心是2.4.20-8
awk的版本是Awk 3.1.1
经过尝试,只能通过『;』间隔,无法使用[Enter]键达到分隔命令的效果,Google尝试搜索,没有找到答案。
抱歉没有使用繁体字提问。
请鸟哥有空指导下。


回頂端
 個人資料  
 
 文章主題 : Re: linux_basic『正規表示法 Regular Expression, RE』討論串
文章發表於 : 2010-06-28 09:17 
離線
Linux 解答達人
Linux 解答達人

註冊時間: 2003-08-14 11:21
文章: 1218
來自: 台北
或許您可以試著以\來達到按下ENTER後還能延續指令的效果~

_________________
尋尋覓覓冷冷清清...悽悽慘慘戚戚
老鳥!!還久得很~~~


回頂端
 個人資料  
 
 文章主題 : Re: linux_basic『正規表示法 Regular Expression, RE』討論串
文章發表於 : 2010-06-28 17:20 
離線
初來乍到小菜鳥
初來乍到小菜鳥

註冊時間: 2010-06-23 12:26
文章: 0
[quote="weider"]或許您可以試著以\來達到按下ENTER後還能延續指令的效果~[/quote]
在这串指令中:

cat pay.txt | \
> awk 'NR==1{printf "%10s %10s %10s %10s %10s\n",$1,$2,$3,$4,"Total" }
NR>=2{total = $2 + $3 + $4
printf "%10s %10d %10d %10d %10.2f\n", $1, $2, $3, $4, total}'

第一行末尾的"\"与第二行">"组成了"\ENTER"
第三行末尾没有"\"这个跳脱符号,第四行开头没有">"提示符号
如果是遗漏,麻烦鸟哥补上,如果有其他能达到同样效果的案件组合,请鸟哥或者weider指点下。
^_^


回頂端
 個人資料  
 
 文章主題 : Re: linux_basic『正規表示法 Regular Expression, RE』討論串
文章發表於 : 2010-06-29 14:11 
離線
站長鳥哥
站長鳥哥

註冊時間: 2002-06-09 23:45
文章: 8464
來自: 南台灣
我使用的是 CentOS 5.x 版,確認上面的指令是能夠執行的!
確實使用 [enter] 可以進到下一行去處理呢!

_________________
解決問題的順序:
1. 先查閱硬體(有沒有超頻/記憶體模組/周邊網路設備的好壞等等);
2. 檢查 /var/log 底下的登錄檔,尤其是 /var/log/messages 的內容;
3. 不要急,先翻書瞭解相關問題的原理,再設法解決~
4. 利用關鍵字,在 www.google.com.tw 查閱是否有人已經遇過類似的問題?
5. 都沒有辦法了,再在討論區以明確的標題以及重要的資訊貼成內文來發問啦!


回頂端
 個人資料  
 
顯示文章 :  排序  
發表新文章 回覆主題  [ 28 篇文章 ] 

所有顯示的時間為 UTC + 8 小時


誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 0 位訪客


不能 在這個版面發表主題
不能 在這個版面回覆主題
不能 在這個版面編輯您的文章
不能 在這個版面刪除您的文章

搜尋:
前往 :  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
正體中文語系由 竹貓星球 維護製作