我正在尝试捕获文件名,同时删除文件扩展名和后缀,例如:
TEST_EXAMPLE_SUFFIX.file
Output = TEST_EXAMPLE
Run Code Online (Sandbox Code Playgroud)
我想在匹配_SUFFIX部分并提取之前的所有字符(不包括_SUFFIX)的基础上这样做.通常我会使用类似的东西:
FILE_EXT=_SUFFIX
/.+?(?=$FILE_EXT)/
Run Code Online (Sandbox Code Playgroud)
但是当它们作为for循环的一部分一起管道时:
for t in $(ls *.fastq | sed -e /.+?(?=$READ1_EXT)/)
Run Code Online (Sandbox Code Playgroud)
我收到错误:
command substitution: line 14: syntax error near unexpected token `('
Run Code Online (Sandbox Code Playgroud)
我做错了什么?
不解析ls输出,您可以使用bash参数扩展来实现您的需要
for t in *_SUFFIX.fastq
do
echo "${t%_SUFFIX.fastq}" #stips _SUFFIX.fastq part
done
Run Code Online (Sandbox Code Playgroud)
参考
编辑:
为了解决重复发生的问题,您可以执行以下操作:
想想看,你有感兴趣的两个文件Test_R1.file与Test_R2.file你希望Test只在结果出现一次做这样的事情
declare -A arry # declaring an associative array
for t in Test_R*.file
do
arry["${t%_R*.file}"]=1
# stips _R(number).file part and makes it a key to arry
# Remember arry keys are unique.
# The assignment ie '=1' is not relevant here, you can assign any value
done
# We are all set to print the unique filenames
echo "${!arry[@]}"
# "${!arry[@]}" expands to the list of array indices (keys) for arry
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
63 次 |
| 最近记录: |