使用 awk/sed 删除每行第三个逗号之后的所有内容

oct*_*ian 1 shell terminal awk sed

我有一个像这样的行的文件:

A, B, C, D, E
Run Code Online (Sandbox Code Playgroud)

从中,我想获得:

A, B, C
Run Code Online (Sandbox Code Playgroud)

我可以为此使用 sed 或 awk 吗?

Mic*_*hrs 5

是的你可以:

 sed -r 's/([^,]+,)([^,]+,)([^,]+).*/\1\2\3/'
Run Code Online (Sandbox Code Playgroud)

如果您想保留三个以上的字段,那么沿着这些方向可能会更好:

sed -r 's/(([^,]+,){2}([^,]+)).*/\1/'
Run Code Online (Sandbox Code Playgroud)

使用awk,您可以执行以下操作:

awk -v OFS=',' -F, '{NF=3; print}'
Run Code Online (Sandbox Code Playgroud)


Ken*_*ent 5

awk -F, '$0=$1 FS $2 FS $3' file
Run Code Online (Sandbox Code Playgroud)

应该做你想做的。