5678:robert dylan :dgm :marketing :04/19/43 85000
我只想显示这个人的名字和指定。 我想用这个sed 。 我该怎么做?
线程局部variables和fs段
Oracle设置了默认的NLS_LANG
如何使用yocto食谱给“configuration”选项?
如何在C和Linux中打印黑桃,红心,钻石等?
Linux内核中的FPU使用
更新 :
echo "5678:robert dylan :dgm :marketing :04/19/43 85000" | sed 's/:/n/g' | sed '1d;3d;$d'| sed 'N;s/n/ - /'
产量
robert dylan - marketing
说明:
按照以下方法将行分成几行:删除第一行,第三行和最后一行,然后再将它们连接起来。
注意 :在最后一个表达式中, 可以通过在'N;s/n/ /'的最后一个/ /
以前的AWK解决方案 :
不是sed ,但是如果awk是可接受的,那么awk就是一个非常自然的工具:
$ echo "5678:robert dylan :dgm :marketing :04/19/43 85000" | awk -F":" '{print $2,$4}'
产量
robert dylan marketing
或者,如果您的数据存储在名为data.txt的文件中:
awk -F":" '{print $2,$4}' data.txt
会产生相同的输出。
awk非常适合这类任务。
说明 :
awk -F":" '{print $2,$4}'
-F将字段分隔符设置为: ,分别print $2,$4打印结果字段2和4。 您可以使用printf根据需要将输出格式化为特定格式。
这可能适合你:
echo "5678:robert dylan :dgm :marketing :04/19/43 85000" | sed 's/[^:]*:([^:]*:)[^:]*:([^:]*):.*/12/' robert dylan :marketing
说明:
替代命令的左侧(LHS)说:
[^:]*:匹配零个或多个非:后跟一个: – 匹配5678:
([^:]*:) ,但将被记忆为反向参考1 – 匹配robert dylan :
[^:]*:如上所述,但没有反向引用 – 匹配dgm :
([^:]*)如上所述(除了:但将被记忆为背景参考2 – 匹配marketing
:.* a :其他所有内容 – 匹配:04/19/43 85000
替代命令的右边说:
12将左侧替换为第一个和第二个后退参照。
只是以为我会在cut的解决方案下降
cut -d ":" -f 2,4
生产:
robert dylan :marketing
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。