Поскольку вы не можете ни читать, ни записывать в файл в целом, вам необходимо сохранить / буферизовать вывод, а затем вывести (вывод) в файл.
Пример like (это удаляет / добавляет только одинзавершающие пустые новые строки):
cmd file | { buf=$(cat); printf "%s\n" "$buf" } > file
или:
temp=$(mktemp)
cmd file > "$temp"
mv "$temp" file
или если у вас есть губка , которая делает именно это:
cmd file | sponge file
Таким образом, вы можете:
for file in /path/*_aa.fasta.aln; do
cut -f 1 -d "|" ${file} > ${file}.1
mv ${file}.1 ${file}
done
или если у вас есть sponge
:
for file in /path/*_aa.fasta.aln; do
cut -f 1 -d "|" "${file}" | sponge "${file}"
done
Примечание: не используйте обратных кавычек ``.Используйте подстановку команд $( ... )
.Обратные кавычки устарели, не читаются и становятся более нечитаемыми при вложении.