如何将剪切命令结果保存在文件中

How to save the cut command result in a file

我的问题很简单:

我用过:

for file in `/path/*_aa.fasta.aln; do cut -f 1 -d "|" ${file} > ${file}.1; done`

如您所见,我将结果存储在 ${file}.1 中,但如何直接在 ${file} 中进行调整?

试试这个:

for file in "/path/*_aa.fasta.aln";
do 
    cut -f 1 -d "|" ${file} > ${file}.tmp; 
    mv  ${file}.tmp ${file}; 
done

由于不能同时读写文件,所以需要先save/buffer输出,再输出(output)到文件。

例如(这个 removes/adds 只有一个尾随空换行符):

cmd file | { buf=$(cat); printf "%s\n" "$buf" } > file

或:

temp=$(mktemp)
cmd file > "$temp"
mv "$temp" file

或者如果您有 sponge 正是这样做的:

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

注意:不要使用反引号 ` `。使用命令替换 $( ... )。反引号已弃用,不可读,并且在嵌套时变得更加不可读。