我有一个这样的清单:
5678:robert dylan :d.g.m. :marketing :04/19/43 85000
Run Code Online (Sandbox Code Playgroud)
我只想显示此人的姓名和名称。我想用sed它。我该怎么做?
更新:
echo "5678:robert dylan :d.g.m. :marketing :04/19/43 85000" |
sed 's/:/\n/g' | sed '1d;3d;$d'| sed 'N;s/\n/ - /'
Run Code Online (Sandbox Code Playgroud)
产量
robert dylan - marketing
Run Code Online (Sandbox Code Playgroud)
解释:
工作原理是将行拆分为基于 的多行:,删除第一行、第三行和最后一行,然后再次将它们连接起来。
注意:在最后一个表达式中,您可以通过在最后一组/ /in'N;s/\n/ /'
以前的 AWK 解决方案:
不是sed,但awk如果可以接受,这是一个非常自然的工具:
$ echo "5678:robert dylan :d.g.m. :marketing :04/19/43 85000" | awk -F":" '{print $2, $4}'
Run Code Online (Sandbox Code Playgroud)
产量
robert dylan marketing
Run Code Online (Sandbox Code Playgroud)
或者,如果您的数据存储在名为 的文件中data.txt:
awk -F":" '{print $2, $4}' data.txt
Run Code Online (Sandbox Code Playgroud)
将产生相同的输出。
awk非常适合此类任务。
说明:
awk -F":" '{print $2, $4}'
Run Code Online (Sandbox Code Playgroud)
-F将字段分隔符设置为:,分别print $2, $4打印结果字段 2 和 4。您可以printf根据需要使用特定格式的输出。
只是想我会使用解决方案 cut
cut -d ":" -f 2,4
Run Code Online (Sandbox Code Playgroud)
产生:
robert dylan :marketing
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22016 次 |
| 最近记录: |