作者 主題: shell script 技巧一問  (閱讀 2144 次)

0 會員 與 1 訪客 正在閱讀本文。

acty

  • 鑽研的研究生
  • *****
  • 文章數: 694
    • 檢視個人資料
    • UNIX 管理者的學習紀錄
shell script 技巧一問
« 於: 2007-11-09 11:36 »
請問有一個檔案有下列內容(僅列兩行)

-----------
林大民
P0001

林小民
P0002

-----------
要怎樣用變成  awk or sed

P0001 林大民
P0002 林小民
~~破窗計畫來囉~~~

學習與挑戰是我的樂趣... HIT!!
我知道的不多  但歡迎大家以起來討論

UNIX 管理者的學習紀錄 - http://actychen.wordpress.com

cch

  • 憂鬱的高中生
  • ***
  • 文章數: 194
    • 檢視個人資料
shell script 技巧一問
« 回覆 #1 於: 2007-11-09 15:57 »
內容是連續四行嗎?

acty

  • 鑽研的研究生
  • *****
  • 文章數: 694
    • 檢視個人資料
    • UNIX 管理者的學習紀錄
Re: shell script 技巧一問
« 回覆 #2 於: 2007-11-09 17:12 »
我大概已經想出來了  有人說可以用 paste 指令來合併行
cat  檔案  | paste -d" " - - - | awk '{print $2, $1}'

是這樣的   我要產生一個名單給 sarg 當作 使用者名單
好可以將 sarg 產出報表時根據這份名單把  工號 username 會變成帶有中文名

下面我是在 linux 去撈我們 AD 的工號及姓名
有需要的人可以參考一下  結果會大致如下
P0001 P0001 林大民

#!/bin/sh
net ads search "(&(sAMAccountName=P*)(objectclass=user))" sAMAccountName cn -U帳號%密碼 | grep -v "Got " |c
ut -d: -f2|paste -d" " - - -| awk '{print $2,$2,$1}' | grep P[0-9] | tr [:upper:] [:lower:] | sort > userlist


paste -d" " - - -
這是把三合併成一行

grep -v "Got" 這是濾掉 net ads search 出來
會有一行 Got XXX replies

awk '{print $2,$2,$1}'
將輸出結果 "林大民 P0001"  改成 "P0001 P0001 林大民"

tr [:upper:] [:lower:]  -- 大寫轉小寫
proxy 裡的工號是小寫  所以將原本的大寫轉小寫
~~破窗計畫來囉~~~

學習與挑戰是我的樂趣... HIT!!
我知道的不多  但歡迎大家以起來討論

UNIX 管理者的學習紀錄 - http://actychen.wordpress.com

acty

  • 鑽研的研究生
  • *****
  • 文章數: 694
    • 檢視個人資料
    • UNIX 管理者的學習紀錄
shell script 技巧一問
« 回覆 #3 於: 2007-11-09 17:12 »
引述: "cch"
內容是連續四行嗎?


謝謝了  我想起來了
~~破窗計畫來囉~~~

學習與挑戰是我的樂趣... HIT!!
我知道的不多  但歡迎大家以起來討論

UNIX 管理者的學習紀錄 - http://actychen.wordpress.com