+ -
当前位置:首页 → 问答吧 → [问题]把文本逐行保存到bash数组的简单办法.

[问题]把文本逐行保存到bash数组的简单办法.

时间:2011-04-28

来源:互联网

本帖最后由 惟吾无为 于 2011-04-28 19:46 编辑

对文件列表进行处理.
find找的, 所以有个'.' , 想去掉这行, 并把剩下的内容按行保存到数组中.

待处理文件名为fl.
# cat fl
link
.
dir
file
chardev
blockdev
pipe
socket

自以为是地
IFS=$'\n'
filename=($(sed "/^\.$/d" fl))
结果后来才发现
${#filename[@]}=1
我想一个元素保存一行, 而非一个元素全文保存呐...

期待
filename[1]=link
filename[2]=dir
filename[3]=file
...
就是为'.'的行忽略掉, 其他的按顺序依次保存在数组中.
filename[0]另作他用.

概要:
1, 需要把为'.'的行去掉, 或者不让find显示'.'.
2, 把改变后的内容逐行保存到数组各元素中中.

要求方案尽可能简单.
最好别循环...
不知awk能否搞定.

作者: 惟吾无为   发布时间: 2011-04-28

  1. xiabao@6P9SN2X ~/test
  2. $ cat urfile
  3. .
  4. link
  5. dir
  6. file
  7. chardev
  8. blockdev
  9. pipe
  10. socket

  11. xiabao@6P9SN2X ~/test
  12. $ filename=(`cat urfile | tr '\n' ' '`)  

  13. xiabao@6P9SN2X ~/test
  14. $ echo ${#filename[@]} ${filename[1]} ${filename[2]} ${filename[3]}  
  15. 8 link dir file
复制代码

作者: xiaopan3322   发布时间: 2011-04-28

学习了。

作者: zooyo   发布时间: 2011-04-28

回复 惟吾无为


    another way:
  1. eval `awk '!/^\.$/{print "filename["++i"]="$0}' file`
复制代码

作者: yinyuemi   发布时间: 2011-04-29

热门下载

更多