Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.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
Bash 在unix中从目录文件中查找不匹配的列表_Bash_Shell_Unix_Awk_Sed - Fatal编程技术网

Bash 在unix中从目录文件中查找不匹配的列表

Bash 在unix中从目录文件中查找不匹配的列表,bash,shell,unix,awk,sed,Bash,Shell,Unix,Awk,Sed,我有一个名为samples.list的文件,其中包含示例ID。我的目录中有相同的文件,我想与sample.list模式匹配,并获得unmatched sample.list的输出 样品清单 SRR1369385 SRR1352799 SRR1377262 SRR1400622 ls-lh -rw-rw----+ 1 gen dbgap_6109 2.2G Jul 29 02:44 SRR1369385_1.fastq.gz -rw-rw----+ 1 gen dbgap_6109 2.

我有一个名为samples.list的文件,其中包含示例ID。我的目录中有相同的文件,我想与sample.list模式匹配,并获得unmatched sample.list的输出

样品清单

SRR1369385 
SRR1352799
SRR1377262
SRR1400622  
ls-lh

-rw-rw----+ 1 gen dbgap_6109 2.2G Jul 29 02:44 SRR1369385_1.fastq.gz 
-rw-rw----+ 1 gen dbgap_6109 2.2G Jul 29 02:44 SRR1369385_2.fastq.gz 
-rw-rw----+ 1 gen dbgap_6109 1.2G Jul 29 03:34 SRR1352799_1.fastq.gz 
-rw-rw----+ 1 gen dbgap_6109 1.2G Jul 29 03:34 SRR1352799_2.fastq.gz 
-rw-rw----+ 1 gen tnt_pipeli 2.2G Jul 29 01:44 sometxt.txt
我想要的输出(与目录中的文件名不匹配的示例):

我试过的代码:

grep -oFf `cat samples.list` ls -lh | grep -vFf - `cat samples.list`
如果有人能指导我完成解决方案,我将不胜感激。

#找到所有以您想要的方式命名的文件并打印文件名
# find all files named in the way you want and print filenames
find . -maxdepth 1 -type f -name '*_*.fastq.gz' -printf "%f\n" |
# Remove all everything except the SRR=numbers
sed 's/_.*//' |
# Sort the list, remove duplicate elements
sort -u |
# join the list with samples and print only unmatched elements from samples
join -v1 -o 1.1 <(sort samples.list) -
找到-maxdepth 1-键入f-名称'*.*.fastq.gz'-printf“%f\n”| #删除除SRR=编号之外的所有内容 sed's/.*/'| #对列表排序,删除重复的元素 排序-u| #使用示例加入列表,并仅打印示例中不匹配的元素 join-v1-o 1.1
#找到所有以您想要的方式命名的文件并打印文件名
找到-maxdepth 1-键入f-名称'*.*.fastq.gz'-printf“%f\n”|
#删除除SRR=编号之外的所有内容
sed's/.*/'|
#对列表排序,删除重复的元素
排序-u|
#使用示例加入列表,并仅打印示例中不匹配的元素
加入-v1-o1.1试试这个:

awk -F_ 'NR==FNR{a[$1]=1;next}!($0 in a)' <(ls) samples.list
awk-F_'NR==FNR{a[$1]=1;下一个}!(a中的$0)“试试这个:

awk -F_ 'NR==FNR{a[$1]=1;next}!($0 in a)' <(ls) samples.list

awk-F_'NR==FNR{a[$1]=1;下一个}!(a中的$0)“@KamilCuk我尝试过,但不起作用:grep-oFf`cat samples.list`$(ls-1q | tr”“?”)”);grep-vFf-`cat samples.list`不解析ls。忘记ls的存在
ls
用于在终端上打印漂亮的文件。如果您在脚本中,请不要使用
ls
。您尝试的行
grep-oFf cat samples.list$(ls-1q | tr”“?”)| grep-vFf-cat samples.list
没有什么意义,我建议您重新阅读相关手册页。:/我建议,不要“猜测”编程,而是先读然后再试。运行
join-v2@KamilCuk,我试过了,但不起作用:grep-oFf`cat-samples.list`$(ls-1q | tr”“?”);grep-vFf-`cat-samples.list`不要解析ls。忘记ls的存在
ls
用于在终端上打印漂亮的文件。如果您在脚本中,请不要使用
ls
。您尝试的行
grep-oFf cat samples.list$(ls-1q | tr”“?”)| grep-vFf-cat samples.list
没有什么意义,我建议您重新阅读相关手册页。:/我建议,不要“猜测”编程,而是先阅读然后再尝试。运行
join-v2