Chinaunix

标题: shell 输出两行结果合并成一行 [打印本页]

作者: p0w3r    时间: 2013-06-24 16:40
标题: shell 输出两行结果合并成一行
本帖最后由 p0w3r 于 2013-06-24 17:13 编辑
  1. root@No:/tmp/state# date "+%F %T";cat /var/state/network | sed -n '8p' | sed 's/^.*ddr=//g'
  2. 2013-06-24 16:35:47
  3. 113.72.145.230
复制代码
看上面输出了两个结果之后就分成两行了. 我弄成让他输出的结果是
  1. 2013-06-24 16:35:47    113.72.145.230
复制代码
这样就可以了. 上面这条命令可是花了我很大力气才弄了出来 .真心伤不起啊.



楼下有要求 附上 /ar/state/network  那我就拿来把. 没什么秘密的
  1. root@No:~# cat /var/state/network
  2. network.lan.up=1
  3. network.lan.connect_time=53
  4. network.lan.device=eth0.1
  5. network.lan.ifname=br-lan
  6. network.loopback.up=1
  7. network.loopback.connect_time=136
  8. network.loopback.device=lo
  9. network.wan.ipaddr=113.72.145.230
  10. network.wan.gateway=113.72.144.1
  11. network.wan.up=1
  12. network.wan.netmask=255.255.255.255
  13. network.wan.connect_time=957239
  14. network.wan.device=eth0.2
  15. network.wan.ifname=pppoe-wan
  16. root@No:~#
复制代码
再说一个 . 到最后 我还要  >> *.txt  写入到文本呢.
作者: 井蛙夏虫    时间: 2013-06-24 16:53
回复 1# p0w3r
将你的命令包含在echo $()中试试
  1. echo $(date "+%F %T";cat /var/state/network | sed -n '8p' | sed 's/^.*ddr=//g')
复制代码

作者: zooyo    时间: 2013-06-24 16:57
提示: 作者被禁止或删除 内容自动屏蔽
作者: zooyo    时间: 2013-06-24 16:58
提示: 作者被禁止或删除 内容自动屏蔽
作者: 关阴月飞    时间: 2013-06-24 17:04
本帖最后由 关阴月飞 于 2013-06-24 17:07 编辑

回复 1# p0w3r

写简单点吧:

  1. time=`date "+%F %T"`
  2. ip=`cat /var/state/network | sed -n '8p' | sed 's/^.*ddr=//g'`
  3. echo "${time}  ${ip}"
复制代码

作者: p0w3r    时间: 2013-06-24 17:11
回复 2# 井蛙夏虫


    嗯 ,这个也可以的. 一个echo 什么都解决了原来. 不过楼下还有很多大神 .我想在学习一下呢. (*^__^*) 嘻嘻 .
作者: p0w3r    时间: 2013-06-24 17:12
回复 5# 关阴月飞


    这样子的话. 是不是需要建立一个 .sh 的文件 来运行呢呢 ?
作者: WilliBhamlll    时间: 2013-06-24 17:17
  1. echo -n `date "+%F %T"`"    ";sed -n 's/.*ipaddr.*=//p' /var/state/network
复制代码

作者: p0w3r    时间: 2013-06-24 17:17
回复 4# zooyo




   
awk 'NR==8{"date \"+%F %T\""|getline cmd;print cmd"\t"$0;exit}' /var/state/network


这条命令输出的结果是这样子.
  1. root@No:~# awk 'NR==8{"date \"+%F %T\""|getline cmd;print cmd"\t"$0;exit}' /var/state/network
  2. 2013-06-24 17:14:24        network.wan.ipaddr=113.72.145.230
  3. root@No:~#
复制代码

作者: p0w3r    时间: 2013-06-24 17:19
回复 9# WilliBhamlll


    膜拜吖 因为这一条命令我弄了一个下午. 原来这么容易的.
作者: zooyo    时间: 2013-06-24 17:20
提示: 作者被禁止或删除 内容自动屏蔽
作者: p0w3r    时间: 2013-06-24 17:26
回复 9# WilliBhamlll


    你的命令 不知道为什么  加上 >> /www/ip.txt  也就是
  1. echo -n `date "+%F %T"`"    ";sed -n 's/.*ipaddr.*=//p' /var/state/network >> /www/
  2. IP.txt
复制代码
然后再查看 txt 文件就只剩下 ip地址了
作者: 关阴月飞    时间: 2013-06-24 17:26
来个awk的吧:
  1. awk -F'=' '/ipaddr/{print strftime("%F %T")"\t"$NF}'  urfile
复制代码

作者: WilliBhamlll    时间: 2013-06-24 17:31
回复 13# p0w3r

因为这是两条命令,需要两次重定向。
改一下就好了。
  1. echo -n `date "+%F %T"`"    " >/www;sed -n 's/.*ipaddr.*=//p' /var/state/network >> /www
复制代码

作者: p0w3r    时间: 2013-06-24 17:31
zooyo 发表于 2013-06-24 17:20
一个awk搞定.

awk -F"=" 'NR==8{"date \"+%F %T\""|getline cmd;print cmd"\t"$2;exit}' /var/state/network


               你这是用什么方式提取的啊  ? 都看不见你有 搜索 " ipaddr " 关键字的?
作者: p0w3r    时间: 2013-06-24 17:38
回复 15# WilliBhamlll


   
echo -n `date "+%F %T"`"    " >/www;sed -n 's/.*ipaddr.*=//p' /var/state/network >> /www



      很好啊.  谢谢. 你们都很热心啊. 谢谢啦.
作者: p0w3r    时间: 2013-06-24 17:39
回复 14# 关阴月飞


    谢谢你 . 看了这么多句命令, 你的最简单呢. 这里的人都很热心 . 谢谢啦.
作者: XanaduNWH    时间: 2013-06-25 16:56
  1. echo -e `date "+%F %T"`"\t"`cat /var/state/network | sed -n '8p' | sed 's/^.*ddr=//g'`
复制代码





欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2