使用awk命令操作列

使用awk命令操作列,awk,multiple-columns,Awk,Multiple Columns,我在一个目录中有大约175个制表符分隔的txt文件。我对第一列感兴趣,我想从每个文件的第一列中删除所有重复项,然后将它们作为列打印到新的txt文件中 #this removes all duplicates in column 1 of myFile.txt awk '!x[$1]++' myFile.txt #this copies all coulmn 1 from every file and paste them as columns in a new file #!/bin/b

我在一个目录中有大约175个制表符分隔的
txt
文件。我对第一列感兴趣,我想从每个文件的第一列中删除所有重复项,然后将它们作为列打印到新的
txt
文件中

#this removes all duplicates in column 1 of myFile.txt
awk '!x[$1]++' myFile.txt 

#this copies all coulmn 1 from every file and paste them as columns in a new file 

#!/bin/bash
OUT=AllColumns.tsv
touch $OUT

for file in *.txt
do
   paste $OUT <(awk -F\\t '{print $1}' $file) > $OUT.tmp
   mv $OUT.tmp $OUT
done
#这将删除myFile.txt第1列中的所有重复项
啊!x[$1]++'myFile.txt
#这将复制每个文件中的所有coulmn 1,并将它们作为列粘贴到新文件中
#!/bin/bash
OUT=AllColumns.tsv
支付美元
对于*.txt格式的文件
做
粘贴$OUT$OUT.tmp
mv$OUT.tmp$OUT
完成
我的问题是,如何组合这两个命令,以便它将每个文件中的第1列(无重复项)打印到一个新文件中作为列?

打印在一个新文件中(每个原始txt中有1列),每个文件只打印第一列(原始文件名+
.filtered.txt

如果每个文件需要uniq(感谢@karakfa的评论)


你是说这个吗
awk'{a[$1]}END{for(a中的x)print x}'*.txt
显示几个输入文件中的几行以及输出应该是什么。我不知道你所说的“.作为列放入新文件”是什么意思。您的意思是应该有一个具有多列的输出文件,每列对应于其中一个输入文件的第1列吗?这将在所有文件中打印唯一的项,而不是每个文件唯一。可能是也可能不是OP所要求的。
awk '!( $1 in F){F[$1]++; print $1 > FILENAME ".filtered.txt" }' *.txt
awk '!( $1","FILENAME in F){F[$1","FILENAME]++; print $1 > FILENAME ".filtered.txt" }' *.txt