藍森林首頁 | 返回主頁 | 本站地圖 | 站內搜索 | 聯繫信箱 |
 您目前的位置:首頁 > 自由軟件 > 技術交流 > 應用編程


    

藍森林 http://www.lslnet.com 2006年6月26日 11:18


請教分離文本的問題

如有一文本
$cat test.txt
   49李清 208606650556200003519
   60潘有 208606650556200003625
  506詹朝 208606668001280005361
  513田利   208606668001280005431
  514陶富 20860666800128000544

我想得將前面的數字和名字分開,如
   49    李清   208606650556200003519
   60    潘有   208606650556200003625
  506   詹朝  208606668001280005361
  513   田利  208606668001280005431
  514   陶富  20860666800128000544
不知道怎麼用表達以空格開始,以數字以尾的第一列,只要分開這數字和漢字就行,謝謝

請教分離文本的問題

[code]
sed 's/^[ ]*//;s/^[0-9]*/& /'[/code]

請教分離文本的問題

果然能用,謝謝了,看懂了這個表達式了,
順便再接著問個問題,那能用sed只顯示第一列為數字的嗎
就上例,只顯示49 60 506 513 514
雖然 sed 's/^[ ]*//;s/^[0-9]*/& /' | awk '{print $1}' 即可
但能只用sed實現嗎,即用sed顯示指定列,謝謝

請教分離文本的問題

借用烈火GG的改一下
[code]sed 's/^[ ]*//;s/[^0-9]\+.*/ /g' file[/code]

awk不行嗎?
[code]awk '{gsub(/[^0-9]+/,"",$1);print $1}' file[/code]

請教分離文本的問題

mocou MM的sed 's/^[ ]*//;s/[^0-9]\+.*/ /g' file
得不到想要的正確結果啊,把file全都輸出來了
awk版的倒是可以。
就是想知道如何用sed得到同樣的結果,呵呵,想多學點啊
不過awk的gsub解釋的太難了,看了半天還是暈乎著

gsub(r,s,t)以字符S替換滿足正則表達式R的字符串T中R

請教分離文本的問題

麻煩點 :mrgreen:
[code]
sed 's/^[ ]*//;s/^[0-9]*/& /;s/\(^[0-9]*\).*/\1/' file[/code]

請教分離文本的問題

[code]# sed -V
GNU sed version 4.0.5

# sed 's/^[ ]*//;s/[^0-9]\+.*/ /g' d5
49
60
506
513
514 [/code]
沒有問題啊,看看sed版本  :em17:

請教分離文本的問題

烈火兄的可以簡便些
[code]sed 's/^[ ]*//;s/\(^[0-9]*\).*/\1/' file[/code]

請教分離文本的問題

又是版本的問題啊,我的還是sco505,唉。。。。。。難怪要出這麼多事,不過也好,順便把linux版的也學到了,呵呵



Copyright © 1999-2000 LSLNET.COM. All rights reserved. 藍森林網站 版權所有。 E-mail : webmaster@lslnet.com