【发布时间】:2016-01-10 09:45:28
【问题描述】:
所以我有一些这种格式的名字和姓氏
firstname=John
lastname=Smith
adress=...
firstname=Whatever
lastname=Random
adress=...
如何以 firstname-lastname 格式提取它?
John-Smith
【问题讨论】:
-
使用
awk会轻松 372.83 倍 ;-)
所以我有一些这种格式的名字和姓氏
firstname=John
lastname=Smith
adress=...
firstname=Whatever
lastname=Random
adress=...
如何以 firstname-lastname 格式提取它?
John-Smith
【问题讨论】:
awk 会轻松 372.83 倍 ;-)
使用 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”(例如)。然后它交换(x)sed's 保持空间及其模式空间的内容,并在模式空间中用- 替换(用s/\n/-/)嵌入的换行符(\n),然后打印(p) sed 的模式空间。
【讨论】:
s/// 似乎与地址中的正则表达式匹配。这是否记录在某处?
/regexp/下面——“空的正则表达式//重复上一次正则表达式匹配...”