我试图在固定长度文件的每一行中的 80 位置插入一个字符串“abcd”。
输入文件
1212121212121212121213231232345 00000003088 234235235321 MISS WAN
1212121212121212121213231232345 00000003088 324556346366 MISS NISCH
1212121212121212121213231232345 00000003088 547478657588 MISS RACHEL
1212121212121212121213231232345 00000009781 313156475788 MR & MRS ROCK
每条记录的长度是
awk '{print length}' temp.txt
74
76
77
79
我无法在 80 处插入数据,我已经尝试了以下命令
sed "s/.\{80\}/&abcd/" test.txt
awk -vFS="" -vOFS="" '{$80=$80"abcd"}1' test.txt
我想我应该先增加记录的长度,然后我才能使用上面的命令。
插入空格
sed -e "s/.\{75\}/& /g" test.txt
sed 's/$/ /" test.txt
循环内
while read line
do
printf "$line " >>temp.txt
done <test.txt
大多数情况下,上面的空格会被下一行修改,并且丢失了一些内容,如下所示。
4044046160710301740053062257440 00000003088 850052246976 MISS WAN
046160710301740053062257440 00000003088 850052246976 MISS NISCH
046160710301740053062257440 00000003088 850052246976 MISS RACHEL
2011888360797600140053062257440 00000009781 851011576287 MR & MRS ROCK
预期答案:
4044046160710301740053062257440 00000003088 850052246976 MISS WAN abcd
4044046160710301740053062257440 00000003088 850052246976 MISS NISCH abcd
4044046160710301740053062257440 00000003088 850052246976 MISS RACHEL abcd
2011888360797600140053062257440 00000009781 851011576287 MR & MRS ROCK abcd
任何关于正确答案的指南将不胜感激。
最佳答案
一个更简单的 awk
$ awk '{printf "%-80s%s\n",$0,"abcd"}' file
1212121212121212121213231232345 00000003088 234235235321 MISS WAN abcd
1212121212121212121213231232345 00000003088 324556346366 MISS NISCH abcd
1212121212121212121213231232345 00000003088 547478657588 MISS RACHEL abcd
1212121212121212121213231232345 00000009781 313156475788 MR & MRS ROCK abcd
关于bash - 在特定位置插入字符串(定长文件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58012990/