Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting 如果在中间使用相同的字符串,如何使用UNIQ?_Sorting_Unix_Awk - Fatal编程技术网

Sorting 如果在中间使用相同的字符串,如何使用UNIQ?

Sorting 如果在中间使用相同的字符串,如何使用UNIQ?,sorting,unix,awk,Sorting,Unix,Awk,我是unix新手,希望能够做到以下几点,但不确定如何做到 获取一个包含以下行的文本文件: pt832p41iEC.213631_EDI832I140401232501.txt pt832p41iEC.213632_EDI832I140401232502.txt se832p41iEC.200289_EDI832I140401232506.txt se832p41iEC.200289_EDI832I140401232507.txt xe832p41iEC.201687_EDI832I140

我是unix新手,希望能够做到以下几点,但不确定如何做到

获取一个包含以下行的文本文件:

pt832p41iEC.213631_EDI832I140401232501.txt 
pt832p41iEC.213632_EDI832I140401232502.txt 
se832p41iEC.200289_EDI832I140401232506.txt 
se832p41iEC.200289_EDI832I140401232507.txt 
xe832p41iEC.201687_EDI832I140401232511.txt 
xe832p41iEC.201687_EDI832I140401232512.txt
如果存在重复的会话号,则应提取第一个出现的会话号。 并输出以下内容:

pt832p41iEC.213631_EDI832I140401232501.txt
pt832p41iEC.213632_EDI832I140401232502.txt  
se832p41iEC.200289_EDI832I140401232506.txt  
xe832p41iEC.201687_EDI832I140401232511.txt

谢谢,

使用
awk

$ awk -F"_" '!seen[$1]++' file
pt832p41iEC.213631_EDI832I140401232501.txt
pt832p41iEC.213632_EDI832I140401232502.txt
se832p41iEC.200289_EDI832I140401232506.txt
xe832p41iEC.201687_EDI832I140401232511.txt
此解决方案是一种
awk
习惯用法,其基本意思是:

awk '!($1 in seen) {seen[$1]++;print}' file

如果$1和$2不总是成对的,则使用awk

awk -F"[._]" '!a[$2]++' file

请明确说明文件名的哪部分是会话号。我猜这是第一部分,但我可能错了。谢谢你们的反馈,我会尝试一下,如果有用的话,让你试试。@user3491651如果有助于解决你的问题,你可以考虑在下面的任何答案上打分。这会让每个人都知道你的问题已经解决了。它也会给你一些重复次数,这样你就可以对答案进行投票。谢谢@BMW,它会在几分钟内尝试你的代码并让你知道。这只适用于相邻的重复行。不过谢谢您的帮助。@user3491651不,它将在任何行中找到重复项。它将始终报告第一行。如果您运行它并发现您刚才报告的行为,则输入文件很可能有前导空格。尽管如此,我还是很高兴你找到了解决办法。