0

行が " " で始まり、行の最後の文字が " " ではない*場合、位置 72 に " " 文字を追加し、列 1 に" " 文字を含む新しい行を追加しようとしています。LOADS***

入力

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 に答える