這是開始bash類中作業問題的一部分。 我需要引入passwd文件,這是我用passfile變量完成的,然後我需要能夠提取它的某些部分並顯示不同的字段。當我使用下面的語句手動grep CLI時,它工作正常。我想要所有的變量,我把它們全部拿出來。在If語句中使用grep來獲取所有項目,忽略空格
grep 1000 passfile | cut -c1-
但是,當我從腳本執行此操作時,它停止或中斷或在用戶全名的第一個「空格」處重新開始。當我只想要一個時,John D. Doe會返回3行。我通過迴應我和以下的價值來看到這一點。
for i in `grep 1000 ${passfile} | cut -c1-
user=`echo $1 | cut -d : -f1`
userID=`echo $1 | cut -d : -f3`
例如,如果行讀取
jdoe:x:123:1000:John D Doe:/home/jdoe:/bin/bash
我得到如下:
i = jdoe:x:123:1000:John
這給了我: 用戶是JDOE,UID是509
但然後在下一行我從R開始。
我= R.所以用戶是R.,UID是R.
下一行
i = Johnson:/home/jjohnson:/bin/bash
返回用戶是約翰遜,UID是/斌/慶典
的passwd文件保存許多用戶,所以我需要使用for循環來處理它們。我認爲如果我能讓它忽略我能得到的空間。但是不知道有關Linux的很多內容,我不確定我是否會走上正確的道路。在此先感謝您的指導/幫助。
'cut'接受'-d'分隔符選項 – knittl 2011-03-07 11:27:04
@ knittl:是的,它的確如此 - 它在輸入和輸出上使用相同的分隔符。有時,如果它處理輸入上的i分隔符並在輸出上生成o分隔符,將會很方便。 AFAIK,它沒有。你也面臨着空間領域的問題。 – 2011-03-07 13:24:53