0

*如果行以“ LOADS*”开头并且该行的最后一个字符不是“ ”,我正在尝试在位置 72 添加一个“ ”字符,*并且还在第 1 列添加一个带有“ *”字符的新行。

输入

LOAD*   720010013       1.5             1.0300          710010013
LOAD*   730010013       1.5             1.0300          710010013       *
*       10.73           1000001
LOAD*   720010014       1.5             1.0300          710010014       *
*
LOAD*   730010014       1.5             1.0300          710010014       *
*       10.73           1000001
LOAD        10013       1.5             1.0300              10013

输出

LOAD*   720010013       1.5             1.0300          710010013       *
*
LOAD*   730010013       1.5             1.0300          710010013       *
*       10.73           1000001
LOAD*   720010014       1.5             1.0300          710010014       *
*
LOAD*   730010014       1.5             1.0300          710010014       *
*       10.73           1000001
LOAD        10013       1.5             1.0300              10013
4

2 回答 2

1

单程:

awk '/^LOAD\*/{if (substr($0,73,1)!="*"){x=sprintf("%-72s%c",substr($0,0,72), "*"); $0=x "\n*";}}1' file
于 2013-01-11T07:38:59.280 回答
0

这可能对您有用(GNU sed):

sed '/^LOAD\*.*[^*]$/!b;:a;/.\{72\}/!s/$/ /;ta;s/\(.\{72\}\).*/\1*\n*/' file

注意使用您的测试数据,*在第 73 列似乎需要。

于 2013-01-11T07:49:45.727 回答