使用 awk 处理文本

发布于 2024-10-11 19:43:54 字数 264 浏览 1 评论 0原文

我正在尝试使用 awk 处理 csv 文件。我的 csv 文件中有五行。我想要我的第 1 栏和第 1 栏第 3 列组合起来是唯一的。使用 awk 我写了

awk -F "," '{print $1,",",$2,","$3,",",$4,",",$5}' A.csv|sort|uniq > ;B.csv

此代码的作用是获得一个由 1 到 5 行组合而成的唯一行。我希望我的其他列位于最终的 csv 文件中,但仅按第一列和第三列进行排序和 uniq。

I am trying to process a csv file using awk. I have five rows in my csv file. I want my column 1 & column 3 combined to be unique. Using awk I wrote

awk -F "," '{print $1,",",$2,","$3,",",$4,",",$5}' A.csv|sort|uniq >B.csv

What this code does is to have a unique row with 1 to 5 rows combined. I want my other columns to be in final csv file but sorted and uniq only by 1st and 3rd columns.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

思慕 2024-10-18 19:43:54

假设您想保留至少一个重复行

$ more file
1 2 3 4 5 6
7 4 6 3 5 8
1 43 3 6 5 10
2 3 4 4 4 4

$ awk '(!($1$3 in u)){u[$1$3]=$0}END{for(i in u ) print u[i]}' file
7 4 6 3 5 8
1 2 3 4 5 6
2 3 4 4 4 4

如果您不想保留重复行

$ awk '($1$3 in u){delete u[$1$3];next}{u[$1$3]=$0}END{for(i in u ) print u[i]}' file
7 4 6 3 5 8
2 3 4 4 4 4

assuming you want to keep at least one of the duplicate lines

$ more file
1 2 3 4 5 6
7 4 6 3 5 8
1 43 3 6 5 10
2 3 4 4 4 4

$ awk '(!($1$3 in u)){u[$1$3]=$0}END{for(i in u ) print u[i]}' file
7 4 6 3 5 8
1 2 3 4 5 6
2 3 4 4 4 4

If you don't want to keep duplicate lines

$ awk '($1$3 in u){delete u[$1$3];next}{u[$1$3]=$0}END{for(i in u ) print u[i]}' file
7 4 6 3 5 8
2 3 4 4 4 4
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文