如何使用AWK打印列的文本摘录?

Ber*_*era 2 regex csv bash awk replace

我正面临着以下列格式打印csv文件格式化值的挑战:

id=Z123456;pseudocode=zxcdsa-12345
id=2345678;pseudocode=123456-rewqa
id=abcsd34;pseudocode=23456
Run Code Online (Sandbox Code Playgroud)

我想要获得这个理想的输出:

Z123456;zxcdsa-12345
2345678;123456-rewqa
abcsd34;23456
Run Code Online (Sandbox Code Playgroud)

使用命令下面我可以打印两列,但我不知道如何从$ 1和$ 2列中提取文本片段

awk -F";" '{ print $1 ";" $2}' sample.csv
Run Code Online (Sandbox Code Playgroud)

提取id =和分号字段分隔符之间的部分需要$ 1.对于第二列$ 2,要打印的匹配模式位于字符串"pseudocode ="之后,直到该行的结尾.

在我最终将结果写入文件之后:

awk -F";" '{ print $1 ";" $2}' sample.csv > result.csv
Run Code Online (Sandbox Code Playgroud)

如何用awk完成这个结果?

感谢帮助.

Cas*_*yte 6

您可以使用;=作为字段分隔符:

awk -F'[;=]' '{ print $2 ";" $4 }' file
Run Code Online (Sandbox Code Playgroud)

[;=]的字符类在哪里;=

或者用sed:

sed 's/[^=;]*=//g' file
Run Code Online (Sandbox Code Playgroud)

  • 关于这一点没有GNU-awk特有的,它是POSIX语法. (2认同)