[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
看不懂,你得说下
1 2 3 4
1 2 3 4 5
那里重复了,是如何重复的
(我只知道1 2 3 4 5去掉 5就是1 2 3 4)

TOP

假设第三列都存在,根据第三列去重并排序(去重时仅保留最先读取的那一行)
[code]
Get-Content 1.txt | sort  -unique {$_.split(' ')[2]} | sc  2.txt
[code]
$_.split(' ')[2]就是第三列,需要多列时加几个数字拼接一下其他列就行了(去重时仅保留最先读取的那一行,而且结果还会排序)

TOP

回复 14# 娜美
$_.split(' ')是按单个空格切分每一行,不是单个空格的就换成其他的字符串
$_.split(' ')[1,2]结果是个数组,数组之间有特有的排序规则(也可能没有),总之将其转成字符串就比较好让人理解了
  1. Get-Content 1.txt | sort  -unique {$_.split(' ')[1,2] -join ''} | sc  2.txt
复制代码
去重时仅保留最先读取的那一行,而且结果还会排序

TOP

本帖最后由 Five66 于 2023-8-3 18:51 编辑

回复 16# 娜美
1.txt的分割符是三个空格吧
  1. Get-Content 1.txt | sort  -unique {($_ -split '   ')[1,2] -join ''} | sc  2.txt
复制代码

TOP

最先读取是指去重时最先读取的,去重一般是在排序完之后进行的
其实完全可以像awk那用ps的哈希或列表去重,不过代码会比较长

TOP

还有种不进行排序的,可能更快更直观更自由点
  1. Get-Content 1.txt | group {($_ -split '   ')[1,2] -join ''} | %{$_.group[0]} | sc 2.txt
复制代码

TOP

本帖最后由 Five66 于 2023-8-3 22:02 编辑

回复 21# 娜美

再加上一行命令
cmd /c "echo.>>2.txt"

TOP

回复 23# 娜美

两行
  1. Get-Content 1.txt | group-object {($_ -split '   ')[1,2] -join ''} | %{$_.group[0]} | sc 2.txt
  2. cmd /c "echo.>>2.txt"
复制代码
一行
  1. (Get-Content 1.txt | group-object {($_ -split '   ')[1,2] -join ''} | %{$_.group[0]} | sc 2.txt);cmd /c "echo.>>2.txt"
复制代码

TOP

返回列表