kha*_*rim 5 string bash awk replace
我有一个 bash 脚本可以替换另一个文件中的字符串:
...
# make MC input script
sig=2.6
awk -v sig="$sig" '{
sub(/XSIGX/, sig);
print;
}' input.txt > output.txt
Run Code Online (Sandbox Code Playgroud)
当我运行它时,input.txt我得到以下内容output.txt(注意替换为“2.6”,但行中缺少cat):
...
echo "hi" >> /work/d/dfranz/o2_modeling/simulated_densities_2.6.txt
cat /work/d/dfranz/o2_modeling/simulated_densities_2.6.txt | sort -nk1 > /work/d/dfranz/o2_modeling/simulated_rho_sorted_XSIGX.txt # <--- This XSIGX was not replaced but the first occurrence in this line was
rm /work/d/dfranz/o2_modeling/simulated_densities_2.6.txt
Run Code Online (Sandbox Code Playgroud)
在 AWK 函数中sub替换一个/第一个实例。如果您替换sub为gsub应该替换所有实例。因此这应该可以正常工作:
sig=2.6
awk -v sig="$sig" '{
gsub(/XSIGX/, sig);
print;
}' input.txt > output.txt
Run Code Online (Sandbox Code Playgroud)