与第一行一样缩进

与第一行一样缩进

如何缩进文件(例如第一行)?

例子:

一个文件包含

     x=1+2+3+4+
5+6+7+8
+9+10+12

应转换为

     x=1+2+3+4+
     5+6+7+8
     +9+10+12

我需要在 Linux 系统上的 shell 脚本中使用它。单衬是优选的。

答案1

一种使用方法perl

perl -pe 'if ($. == 1) { m/^(\s*)/; $space = $1 || q{}; next } s/^\s*/$space/' infile

它产生:

    x=1+2+3+4+
    5+6+7+8
    +9+10+12

答案2

您可以在 awk 中执行此操作:

awk 'NR==1{split($0,a,/[^ \t]/)}{sub(/^[ \t]*/,a[1]);print}' file.in

答案3

使用 sed:

sed -e '1{h;s/[^[:blank:]].*//;x;b' -e '}' -e 'G;s/[[:blank:]]*\(.*\)\n\(.*\)/\2\1/'

相关内容