作者 主題: 請問shell script的問題  (閱讀 6306 次)

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

kumee

  • 憂鬱的高中生
  • ***
  • 文章數: 130
    • 檢視個人資料
    • http://www.kume.idv.tw
請問shell script的問題
« 於: 2005-03-11 11:26 »
假如在一個file中
10.10.10.1
10.10.10.2
10.10.10.3
10.10.10.4
10.10.10.5
  :
  :
我該如何用grep(或其他方法)把file中的所有IP用空格隔開存在一個變數中呢??
我試過用
代碼: [選擇]
text=$(grep . /file)
但text的值會變成
代碼: [選擇]

10.10.10.1
10.10.10.2
10.10.10.3
10.10.10.4
10.10.10.5
  :
  :

這會導致使用$text時會有問題,請問該如何讓$text變成
代碼: [選擇]
10.10.10.1 10.10.10.2 10.10.10.3 10.10.10.4 10.10.10.5 .. ..
呢??
 :(

thyme

  • 老人組
  • 俺是博士!
  • *****
  • 文章數: 1281
    • 檢視個人資料
請問shell script的問題
« 回覆 #1 於: 2005-03-11 11:50 »
cat file | xargs

kumee

  • 憂鬱的高中生
  • ***
  • 文章數: 130
    • 檢視個人資料
    • http://www.kume.idv.tw
請問shell script的問題
« 回覆 #2 於: 2005-03-11 13:31 »
感謝,測試OK!!
man xargs 研究中...

duan

  • 榮譽博士
  • 活潑的大學生
  • ***
  • 文章數: 253
    • 檢視個人資料
請問shell script的問題
« 回覆 #3 於: 2005-03-11 14:10 »
介紹另一個比較單純的方法:

#!/bin/sh
while read LINE; do
   echo $LINE;
done < some_text_file.txt

供您參考  :)

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17466
    • 檢視個人資料
    • http://www.study-area.org
請問shell script的問題
« 回覆 #4 於: 2005-03-11 14:28 »
試試 echo 也行:
echo $(cat file)

duan

  • 榮譽博士
  • 活潑的大學生
  • ***
  • 文章數: 253
    • 檢視個人資料
請問shell script的問題
« 回覆 #5 於: 2005-03-11 14:52 »
引述: "netman"
試試 echo 也行:
echo $(cat file)


wa....這樣果然是比較快, 用 while 的話換行字元還在, 還要多一步
處理.     :)

kumee

  • 憂鬱的高中生
  • ***
  • 文章數: 130
    • 檢視個人資料
    • http://www.kume.idv.tw
請問shell script的問題
« 回覆 #6 於: 2005-03-11 16:03 »
看了三種方法後..發現關鍵字應是standard input/output,
感謝netman學長的方法。

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17466
    • 檢視個人資料
    • http://www.study-area.org
請問shell script的問題
« 回覆 #7 於: 2005-03-11 16:13 »
關鍵應是 IFS 啦...  ^_^

kumee

  • 憂鬱的高中生
  • ***
  • 文章數: 130
    • 檢視個人資料
    • http://www.kume.idv.tw
請問shell script的問題
« 回覆 #8 於: 2005-03-11 17:26 »
引述: "netman"
關鍵應是 IFS 啦...  ^_^


netman大大..
請恕我才淺學粗..
....IFS是哪幾個字的縮寫啊..
剛剛去man了一下IFS..man沒有啊...
 :oops:

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17466
    • 檢視個人資料
    • http://www.study-area.org
請問shell script的問題
« 回覆 #9 於: 2005-03-11 18:39 »
IFS=Internal Fiel Seperator
find it out in 'man bash'.

you could have a try like this:
代碼: [選擇]
old_IFS="$IFS"
echo $(cat file)
IFS="$old_IFS"
echo $(cat file)

kumee

  • 憂鬱的高中生
  • ***
  • 文章數: 130
    • 檢視個人資料
    • http://www.kume.idv.tw
請問shell script的問題
« 回覆 #10 於: 2005-03-15 09:16 »
netman大大
我試過您上述的程式碼,但執行出來的結果我看不出有何差別耶...
能否請您在指點一下呢..
以下是我執行出來的結果..
代碼: [選擇]

[root@aaeboss root]# cat ip
10.10.10.1
10.10.10.3
10.10.10.4
10.10.10.5
10.10.10.6
10.10.10.7
10.10.10.8
10.10.10.9
[root@aaeboss root]# old_IFS="$IFS"
[root@aaeboss root]# echo $(cat ip)
10.10.10.1 10.10.10.3 10.10.10.4 10.10.10.5 10.10.10.6 10.10.10.7 10.10.10.8 10.10.10.9
[root@aaeboss root]# IFS="$old_IFS"
[root@aaeboss root]# echo $(cat ip)
10.10.10.1 10.10.10.3 10.10.10.4 10.10.10.5 10.10.10.6 10.10.10.7 10.10.10.8 10.10.10.9
[root@aaeboss root]#

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17466
    • 檢視個人資料
    • http://www.study-area.org
請問shell script的問題
« 回覆 #11 於: 2005-03-15 10:52 »
sorry, 漏寫了兩行...  ^_^
代碼: [選擇]
old_IFS="$IFS"
echo $(cat file)
IFS=
echo $(cat file)
IFS="$old_IFS"

唐小路

  • 活潑的大學生
  • ***
  • 文章數: 277
    • 檢視個人資料
請問shell script的問題
« 回覆 #12 於: 2005-03-15 11:36 »
引述: "netman"
IFS=Internal Fiel Seperator
find it out in 'man bash'.

you could have a try like this:
代碼: [選擇]
old_IFS="$IFS"
echo $(cat file)
IFS="$old_IFS"
echo $(cat file)


引述: "netman"
sorry, 漏寫了行...  ^_^
代碼: [選擇]
old_IFS="$IFS"
echo $(cat file)
IFS=
echo $(cat file)
IFS="$old_IFS"

 :o  :o  :o
....

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17466
    • 檢視個人資料
    • http://www.study-area.org
請問shell script的問題
« 回覆 #13 於: 2005-03-15 11:38 »
^_^ whatever...