sed命令将/ *放在行的开头,* /放在行的70和71位置

时间:2017-05-16 20:40:58

标签: bash shell sed linux-kernel

我是bash并且使用bash编写一个自动化的新手。我有这样的情况,我需要将/ *放在行的开头,将* /放在行的末尾(位置70,71),用于7到21之间的所有行。

在更改之前,它应该看起来像

  APF ADD                                                              
  DSNAME(FELE00.SFEKAUTH)                                            
  VOLUME(C2PRD1)

变更之后应该看起来像

/*APF ADD                              */                                
/*DSNAME(FELE00.SFEKAUTH)            */                              
/*VOLUME(C2PRD1)                       */

然后我想用其他方式替换/ *和* / with spaces

1 个答案:

答案 0 :(得分:0)

以下命令可以解决问题。

使用名为raw

的文件

第一个sed会将/ *放在行的开头,删除那里的双倍空格

然后用空格填充空格到71个字符长(第二个sed工作需要)

第二个sed改变70. char到*和71. char到/

运算符>>将输出重定向到名为processed

的文件
cat raw | sed 's/^  /\/\*/g' | awk -F "$" '{printf "%-71s\n", $1}' | sed 's/./\//70;s/./\*/71' >> processed