Re: [問題] grep的用法

看板Linux作者 (帥啊~!老皮~!!)時間12年前 (2014/03/09 07:08), 編輯推噓1(101)
留言2則, 2人參與, 最新討論串3/4 (看更多)
※ 引述《lc85301 (pomelocandy)》之銘言: : ※ 引述《verdd (R.V.)》之銘言: : : 各位大大 高手好 想請問各位一個grep抓資料的問題 : : 我想要從資料庫裡面挑選我要的資料 : : 例如我想從5筆資料裡面挑選特定3筆出來 : : 資料庫的結構是這樣 : : 例如 : : 1 x x x x x x x x ....... : : 2 y y y y y y y y......... : : 3 z z z z z z z z ........ : : 4 a a a a a a a a ........ : : 5 b b b b b b b b ........... : : 我想指定第1,4,5 筆資料被挑出來 包括後面那一串東西都被完整列出來 : : 然後寫入result.txt檔 : : 1 x x x x x x x x ....... : : 4 a a a a a a a a ........ : : 5 b b b b b b b b ........... : : 請問我指令該怎麼打呢? 謝謝各位指教 : : grep ......... "database.txt" > result.txt : 我回一個來試著回答 : 首先我要說原PO的問題有點模糊 : 我猜CP64大大也是想回文"選出來的條件是什麼"也是類似的原因 : 如果問題只有verdd描述的這樣幾行,那用grep sed去取就可以 : 但grep的用法是比對某特定字串,這裡只有3個,但要取的內容完全不一樣 : 而且1,4,5很容易跟內容重複 : 要是要取出開頭為1,4,5,9,13,22,35,57 ,咦,自動找出規律了(誤) : 你用grep 解就會吃土 : sed一樣,數量一多也會吃土 : -- : 如果數字有規律,例如每3行去取 : 那應該可以用awk去解 : 事實上我覺得我打的規律1,4,5,9應該可以用awk去取 : 小弟不才,有沒有強者出來解一下lol : -- : 如果問題大到100行以上 : 這時候我就會選python script : 但首先還是要回到你的條件 : "請問你選出來的條件是什麼" : 也許是一堆想找的字串或數字 : 假設是字串好了 : 我會先建個dict : 然後取每行的第一個token,看看它在不在dict裡面 : 那請問這些東西在哪?也許在另一個檔案? : 我們都不知道耶lol : -- : 總之,問題問得愈清楚,大家也就回答的愈清楚 我用幾個檔案測試了苦主的問題,lc85301大大說應該用awk解決,我也是用這工具... 如果確定要用每列開頭第一行的數據來決定要不要print出來這一列,可以這麼做: awk '{if ($1==1 || $1==4 || $1==5){print $0}}' database.txt >> out.dat $1代表每列的第一行,由於這個問題要用第一行做判斷故出此策,$0代表一整列. out.dat 就會看到過濾的結果了。 -- 傑米,炸掉它吧。 ⊙─ ─⊙▂⊙ 碰到問題,用C4就對了! █◤ Adam Savage James Hyneman MYTHBUSTERS by dajidali -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.25.18.95

03/10 11:50, , 1F
AWK真得滿好用的0.0
03/10 11:50, 1F

03/17 07:51, , 2F
感謝解圍阿~~~!!
03/17 07:51, 2F
文章代碼(AID): #1J6wC6FP (Linux)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 4 篇):
3
8
文章代碼(AID): #1J6wC6FP (Linux)