【问题标题】:Linux bash shell script sort linesLinux bash shell 脚本排序行
【发布时间】:2017-05-30 16:56:48
【问题描述】:

我有一个包含以下行的文件:

[172.16.50.134] 62825  
"/root/blz.txt" 62825  
[172.16.50.133] 62933  
"/home/Log/mail.log" 62933  
"/home/Log/log.txt" 62933  
[172.16.50.138] 67888  
"/home/Log/test.txt" 67888

但我需要以下格式:

[172.16.50.134] "/root/blz.txt"  
[172.16.50.133] "/home/Log/mail.log"   
[172.16.50.133] "/home/Log/log.txt"   
[172.16.50.138] "/home/Log/test.txt"

如何使用 Linux Shell 脚本做到这一点?
谢谢。

【问题讨论】:

  • 欢迎来到 StackOverFlow。正如@BrianAgnew 所说,你应该展示你已经做了什么以及你知道什么。谢谢
  • 请注意,如果您的原始输入不代表您的实际问题,而是一个正确的答案因为它实际上被问到给出,您应该接受该答案并提出一个新问题。 (与澄清已经存在的内容相反,更改问题含义的编辑在给出答案之前是受欢迎的)。

标签: linux shell


【解决方案1】:

使用 awk:

awk 'BEGIN{a=0;}/^\[/{printf "%s %s ",$1,$2; a=0; b=$1; c=$2; next;}{if(a==0) {print $1; a=1} else {print b,c,$1}}' filename

【讨论】:

  • 你好,谢谢。它工作完美。但是我已经更改了输入文件。IP 行在 IP 之后有一个用户示例 [172.16.50.134] root 62825。输出 [172.16.50.134] root "/root/blz.txt" 我试过了,但它不起作用。你能再帮忙吗?
猜你喜欢
  • 1970-01-01
  • 2017-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-24
  • 1970-01-01
  • 1970-01-01
  • 2015-09-03
相关资源
最近更新 更多