当前位置:  技术问答>linux和unix

不会做这个SHELL,请大家帮忙,有没有最简单的方法?

    来源: 互联网  发布时间:2015-03-07

    本文导语:  我想实现这样一个功能,由SHELL程序读入3个文本文件中的内容,同时作为我SHELL的变量。例如: cat file1 1 2 3 cat file2 aaa bbb ccc cat file3 aa bb cc SHELL里写上echo "insert table values('$num','$char','$char2') 最终得到如下文件 insert...

我想实现这样一个功能,由SHELL程序读入3个文本文件中的内容,同时作为我SHELL的变量。例如:
cat file1
1
2
3
cat file2
aaa
bbb
ccc
cat file3
aa
bb
cc
SHELL里写上echo "insert table values('$num','$char','$char2')
最终得到如下文件
insert table values('1','aaa','aa')
insert table values('2','bbb','bb')
insert table values('3','ccc','cc)



|
下面的shell文本能够帮你完成输出,不过没有按照你给出的格式,那样反倒麻烦了。
count=1
total_line=`cat file1|wc -l`

while
  test "${count}" -le "${total_line}"
do
  awk "NR==$count {printf "insert table values('%s',", $0 }" file1
  awk "NR==$count {printf "'%s',", $0 }" file2
  awk "NR==$count {printf "'%s')n", $0 }" file3
  count=`expr $count + 1`
done|cat>result.txt

一些说明:
3个file都要在执行文件目录下。
输出在result.txt文件中。
输出的格式很不爽,不过好像没有其他好办法,——我对awk不是很熟练。


|
paste file1 file2 file3|awk '{print "insert table values(""  $1 "","" $2 "","" $3 "")" }'|sed 's/"/'/g'>targetfile

|
不好意思,打个补丁:
把后面改成:
|sed "s/"/'/g" >targetfile
如果你不想出现变量不够的情况,就在awk后加个条件
NF==3,变成这样:
paste file1 file2 file3|awk ' NF == 3 { print "insert table values(""  $1 "","" $2 "","" $3 "")" }'|sed "s/"/'/g" >targetfile
就可以了,
这样可以把下例中的后两行滤掉:
cat file1
1
2
3
4
cat file2
aaa
bbb
ccc
cat file3
aa
bb
cc
dd
ee

cat targetfile
insert table values('1','aaa','aa')
insert table values('2','bbb','bb')
insert table values('3','ccc','cc)

|
太难,建议你放弃用shell的方法,如果用awk,即使实现了,运行效率也非常低。我能想到的就是循环读一行。如果有一万行,那就是一万的三次方,不可能这样运行。

你朋友教的方法比较好,用数据库,建表。非常快!

    
 
 

您可能感兴趣的文章:

  • Linux有没有在文本界面下可用的中文输入法?(不会用五笔哟)(100分求助!)
  • 有没有人懂PostGreSQL这种数据库?MySQL是收费的,决定用PostGreSQL,但不会....
  • 有没有使用java.security类来加密文本(不是数字签名)的程序?可否给我看看.我不会用那个类.最好是用RSA和DES算法的.
  • 下载一个声卡驱动,后缀是.sh.gz,不会安装,各位大侠帮忙~
  • 连MP3都不会播放,请各位帮忙
  • 100分立给。请问在LINUX下开发嵌入式系统,会不会受64K基本内存的限制?这个问题很菜,请大家帮忙
  • 求教高手一个jbuilder开发中碰到的奇怪问题?真的不会了,一定要帮忙!
  • 我不会javascript,简单js代码,请帮忙,我急用!help!!!
  • 各位大下,上次纯属我的时间问题。不会在有了!!在此特谦意!这有个问题,帮忙了!!
  • 找了个跨平台的BASIC语言在Linux下面怎么安装这个软件呀。第一次弄不会呀!大家帮帮忙!
  • 有一个SHELL不会写,能帮忙下吗
  • 一道毕业设计题 关于 日期月份 文件访问 对您来说很简单 可我不会 朋友要我帮忙做的 拜托了!!!
  • 幼稚问题,请帮忙,我不会呀.....(也就50分吧)
  • 呼叫:linux高手,进来帮帮忙吧,弄了很久了,vmware tools不会装,郁闷死了!!!
  • 谁在学<unix网络编程>这本书得阿?我不会用他得头文件(新手,分不多,希望能帮忙,谢谢)
  • Linux下Qt加载OpenCV静态链接库的问题,弄了好几天了还不会,求大神帮忙!
  • 对debian进行升级,装了个Xorg,但是不会配置,高手帮忙。。
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 多个用户同时使用bean,bean中的变量和方法会不会冲突?
  • 用jb写方法时,为什么光标不会在当前字符的后面?
  • GET方法里,如何把中文参数上传,不会出现乱码?
  • 请问什么方法可以使我记录的数据在突然掉电的情况下,也不会丢失???????
  • 怎样用actionPerformed方法,创建jlabel,特急!问了好多人,都不会.
  • 在VMware中分区会不会影响原有的物理磁盘呢?
  • 安装Liunix会不会影响windows的声音?
  • 问一个很基础的问题,单进程会不会产生死锁?
  • close 一个文件描述符会不会改变其值?
  • linux命令如何实现重启父进程而不会使其子进程退出
  • Linux里的pthread_create会不会阻塞啊?
  • mysql iis7站长之家
  • 头文件修改后为什么不会重新编译
  • 每个线程都进行申请文件描述符的操作的话,会不会发生文件描述符申请冲突?
  • 求教:一进程执行过程中被同一外部中断程序大量反复中断会不会引起内核栈溢出?
  • 字符不会撑大表格的常见css样式
  • 简单问题 但是我不会 给分
  • 虽然过了SCJP,但分数不高。 一般公司面式的时候会不会问成绩??
  • 为什么 out.println()不会换行?谢谢
  • 想用APACHE做WEBSERVER,但不会用APACHE,请教。
  • 只剩最后30分了,希望不会白问,james问题!
  • 串口读写过于频繁 会不会出错 0.1秒算不算过快?
  • 老板给的一个题目~ 我什么都不会~
  • 取消正常运行的子线程会不会出错的?
  • 100分征集:小弟用VMware Workstation装上了linux不会上网请问如何解决?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3