linux - 使用 awk/sed/cut/grep 从文本文件中提取冒号分隔的字段/值

标签 linux bash parsing split

我想从文本文件中提取一些成对出现的分隔字段/值,它们可能出现在行或段落中的任何位置。该文件可能包含几个长或短的段落。我希望输出为每个文件仅一行或每次出现一行。我执行了多个选项,成功获取了字段名的第一次出现或第二次出现,但不是两者都出现。我可以通过一次“传递”获得 N 个字段名,然后我需要为以下字段名运行第二个“传递”,并解决与订单相关的问题。 有什么建议可以用一行命令完成此操作吗?

Text File 1
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed faucibus orci justo, quis faucibus arcu scelerisque molestie. 
Curabitur :Field1 Value1: lacus at scelerisque :Field2 Value2: aliquam. Aenean mattis elit et magna volutpat, eu finibus justo cursus. 
Etiam non cursus nisi. Donec urna nulla, convallis ut velit sit amet, accumsan faucibus urna. :Field1 Value2: lacinia lectus :Field3 Value2: bibendum ligula dictum gravida. Duis eget metus sed lorem scelerisque varius. 

Text File 2
Duis leo sem, placerat eget :Field3 Value1: volutpat eget, condimentum at odio. Ut iaculis tincidunt massa, in :Field1 Value2: accumsan nulla bibendum quis. Sed tincidunt justo sit amet est bibendum mollis. Fusce gravida nunc a nibh blandit ullamcorper. Aliquam auctor laoreet pellentesque :Field1 Value1:
Quisque tempor ultrices congue.
Mauris feugiat est sed neque malesuada tincidunt. Pellentesque fringilla, nunc vitae porta tempor, mauris felis ultricies eros, ac hendrerit lacus odio et nisi. Vivamus cursus lacinia nunc, a mollis mi hendrerit a. Nunc commodo dui nec iaculis fringilla.

Desired output for Text File 1

FieldName1 Value2 FieldName2 Value2  FieldName1 Value1  FieldName3 Value2

FieldName1 Value2   
FieldName2 Value2
FieldName1 Value1
FieldName3 Value2

Desired output for Text File 2

FieldName3 Value1  FieldName1 Value2  FieldName1 Value1

FieldName3 Value1
FieldName1 Value2
FieldName1 Value1

最佳答案

如果您使用冒号作为字段分隔符,您会发现占位符是偶数编号的字段:

awk -F: '{for (i=2; i<=NF; i+=2) print $i}' file

将帮助您完成大部分任务。

关于linux - 使用 awk/sed/cut/grep 从文本文件中提取冒号分隔的字段/值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51775800/

相关文章:

python - ctypes 加载具有依赖关系的 c 共享库

bash - 通过 SSH 执行存储在文件中的 Bash 脚本

linux - Bash 别名在文件名中创建具有当前时间戳的文件

bash - 在Google Colab中构建Docker容器: unknown flag -t

string - 使用lua解析代码语法?

c# - linux下C++中Gmap.Net的替代品

linux - 从 bash 脚本返回错误的 BASH 变量

linux - TIAM57xx 上 Linux 中的 USB HID 小工具 "g_hid"

c - 如何使用负浮点进行 sscanf ?

python - 学习python中的解析器