我有一个包含一些行的文本文件,例如:
hbcdefgg001asdfn
hasezahg002ehea
jasehaah003dcdn
abcdefgh006ahdh
这些行遵循设定的格式,例如:
最后一行包含最后一行的总数。我现在需要以编程方式复制前3行,比如10次,然后用新的总金额重新输入最后一行。
我想知道您认为操纵每条线的最佳方法是什么?每个字母/金额/代码的位置是固定的。
答案 0 :(得分:0)
使用shell工具:seq
,head
,cut
,awk
,tail
和sed
。
输入文件:
$ cat so.txt
hbcdefgX001asdfn
hasezahX002ehea
jasehaah003dcdn
abcdefgh006ahdh
打印前三行1,000次:
$ for i in $(seq 1000)
do
head -3 so.txt >> so-long.txt
done
计算总和:
$ sum=$(cut -b9-11 < so-long.txt | awk '{sum += $1}; END {print sum}')
替换最后一行中的总和并将其附加到输出:
$ tail -1 so.txt | sed "s/^\(........\)\(...\)/\1${sum}/" >> so-long.txt
现在so-long.txt
包含6,000行,最后五行是:
$ tail -5 so-long.txt
jasehaah003dcdn
hbcdefgX001asdfn
hasezahX002ehea
jasehaah003dcdn
abcdefgh6000ahdh