我有一个名为list_of_files.txt的文件,它是500多个其他文件的列表。它看起来像这样:
list1.txt
list2.txt
list3.txt
etc
这列出所有类似的内容:(所有列都由数值组成) value1 value2 value3 value4 value5 value6 等
对于这些列表中的每一个,我想剪切一个感兴趣的列,对其进行排序以使该数字按递增顺序排列并检查我的原始文件和新文件是否具有相同的顺序。
我尝试制作一个循环.sh脚本,如下所示:
for i in list_of_files.txt
do
cut -f3 -d " " list*.txt > chr*_all_positions.txt
sort -n chr*_all_positions.txt > chr*_ordered_positions.txt
diff chr*_all_positions.txt chr*_ordered_positions.txt > result_*.txt
done
然而,这不起作用。任何帮助将不胜感激。
答案 0 :(得分:0)
循环覆盖数字,而不是文件名:
i=1
while [[ -f list$i.txt ]] ; do
cut -f3 -d " " list$i.txt > chr$i\_all_positions.txt
sort -n chr$i\_all_positions.txt > chr$i\_ordered_positions.txt
diff chr$i\_all_positions.txt chr$i\_ordered_positions.txt > result_$i.txt
((i++))
done
此外,您可以使用sort -c
或sort -C
检查输出是否已排序,而无需创建_ordered
文件。
答案 1 :(得分:0)
使用readarray和array
readarray -t arrname < list_of_files.txt
for filename in "${arrname[@]}"; do
...
done
使用read builtin
while read filename; do
...
done < list_of_files.txt