【问题标题】:Extracting first and last name from contacts with sed使用 sed 从联系人中提取名字和姓氏
【发布时间】:2016-01-10 09:45:28
【问题描述】:

所以我有一些这种格式的名字和姓氏

firstname=John
lastname=Smith
adress=...

firstname=Whatever
lastname=Random
adress=...

如何以 firstname-lastname 格式提取它?

John-Smith

【问题讨论】:

  • 使用awk 会轻松 372.83 倍 ;-)

标签: sed extract


【解决方案1】:

使用 GNU sed:

sed -n '/^firstname=/{s///;h};/^lastname=/{s///;H;x;s/\n/-/;p}' file

输出:

约翰·史密斯 随心所欲

第一部分 (/^firstname=/{s///;h}) 将部分从 firstname= 复制到 sed 的保留空间。

较长的第二部分 (/^lastname=/{s///;H;x;s/\n/-/;p}) 将部分从 lastname= 附加到 sed 的保留空间。保留空间现在包含带有尾随换行符的“John”和“Smith”(例如)。然后它交换(xsed's 保持空间及其模式空间的内容,并在模式空间中用- 替换(用s/\n/-/)嵌入的换行符(\n),然后打印(psed 的模式空间。

【讨论】:

  • s/// 似乎与地址中的正则表达式匹配。这是否记录在某处?
  • @BenjaminW.:我不知道。一些 GNU sed 功能没有记录在其手册页或信息页中。
  • 哦,原来是in the manual,在/regexp/下面——“空的正则表达式//重复上一次正则表达式匹配...”
猜你喜欢
  • 2012-10-11
  • 2011-05-17
  • 1970-01-01
  • 1970-01-01
  • 2013-01-20
  • 2013-06-11
  • 1970-01-01
  • 1970-01-01
  • 2012-12-06
相关资源
最近更新 更多