use*_*170 3 linux script bash shell ubuntu
出于某种原因,此脚本为每个原件输出三个文件,而不是一个。
一定犯了一些小错误 - 我是新手!
如果有人能解释为什么会发生这种情况,我将非常感激。
脚本:-
for f in *.txt
do
noOfRows=$(cat $f | wc -l)
relevantRows=$(expr $noOfRows - 5)
head -n $relevantRows $f | tee ${f%.txt}-Amended.txt
done
Run Code Online (Sandbox Code Playgroud)
ls 命令的结果:-
E12-5_F2_NEG-Amended-Amended-Amended.txt E12-5_M3_POS-Amended-Amended-Amended.txt
E12-5_F2_NEG-Amended-Amended.txt E12-5_M3_POS-Amended-Amended.txt
E12-5_F2_NEG-Amended.txt E12-5_M3_POS-Amended.txt
E12-5_F2_NEG.txt E12-5_M3_POS.txt
E12-5_F2_POS-Amended-Amended-Amended.txt E12-5_M4_NEG-Amended-Amended-Amended.txt
E12-5_F2_POS-Amended-Amended.txt E12-5_M4_NEG-Amended-Amended.txt
E12-5_F2_POS-Amended.txt E12-5_M4_NEG-Amended.txt
E12-5_F2_POS.txt E12-5_M4_NEG.txt
E12-5_F5_NEG-Amended-Amended-Amended.txt E12-5_M4_POS-Amended-Amended-Amended.txt
E12-5_F5_NEG-Amended-Amended.txt E12-5_M4_POS-Amended-Amended.txt
E12-5_F5_NEG-Amended.txt E12-5_M4_POS-Amended.txt
E12-5_F5_NEG.txt E12-5_M4_POS.txt
E12-5_F5_POS-Amended-Amended-Amended.txt E12-5_M7_NEG-Amended-Amended-Amended.txt
E12-5_F5_POS-Amended-Amended.txt E12-5_M7_NEG-Amended-Amended.txt
E12-5_F5_POS-Amended.txt E12-5_M7_NEG-Amended.txt
E12-5_F5_POS.txt E12-5_M7_NEG.txt
E12-5_M3_NEG-Amended-Amended-Amended.txt E12-5_M7_POS-Amended-Amended-Amended.txt
E12-5_M3_NEG-Amended-Amended.txt E12-5_M7_POS-Amended-Amended.txt
E12-5_M3_NEG-Amended.txt E12-5_M7_POS-Amended.txt
E12-5_M3_NEG.txt E12-5_M7_POS.txt
Run Code Online (Sandbox Code Playgroud)
非常感谢,亚当
这个脚本为每个原始文件输出三个文件......如果有人能解释为什么会发生这种情况,非常感谢。
由于E12-5_F2_NEG-Amended.txt以.txt它结尾,下次运行脚本时,脚本会选取它。
三重结果表明您在调试脚本时运行了 3 次脚本。
如果脚本输出 to$f.new而不是 to ${f%.txt}-Amended.txt,你就不会有这个问题。
或者放在rm *Amended.txt程序的开头。如果您有大量文件和 a 目录,这在较旧的 Unix 变体上可能会很慢。
另一种选择是将文件输出到子目录中(例如"new/${f%.txt}.Amended.txt")