如何将剪切命令结果保存在文件中
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
注意:不要使用反引号 ` `。使用命令替换 $( ... )
。反引号已弃用,不可读,并且在嵌套时变得更加不可读。
我的问题很简单:
我用过:
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
注意:不要使用反引号 ` `。使用命令替换 $( ... )
。反引号已弃用,不可读,并且在嵌套时变得更加不可读。