文本编辑器在特定字段中编辑,如下所示

时间:2015-06-24 11:07:50

标签: java file terminal

我有一个包含一些行的文本文件,例如:

hbcdefgg001asdfn    
hasezahg002ehea     
jasehaah003dcdn    
abcdefgh006ahdh

这些行遵循设定的格式,例如:

  1. 前8个字符必须是字母
  2. 然后接下来的3个字符是金额,
  3. 后跟4个字母的代码。
  4. 最后一行包含最后一行的总数。我现在需要以编程方式复制前3行,比如10次,然后用新的总金额重新输入最后一行。

    我想知道您认为操纵每条线的最佳方法是什么?每个字母/金额/代码的位置是固定的。

1 个答案:

答案 0 :(得分:0)

使用shell工具:seqheadcutawktailsed

输入文件:

$ 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