bash,请仅从行首删除一半空格

时间:2019-03-05 16:01:43

标签: linux bash awk sed

我需要从行首删除空格,但是只有1/2,例如:

    <div class="section" id="contact">
    <div class="container">
        <div class="col-md-12">
            <h4>04</h4>

  <div class="section" id="contact">
  <div class="container">
    <div class="col-md-12">
      <h4>04</h4>

预先感谢您的任何建议。

3 个答案:

答案 0 :(得分:2)

在sed中使用组

sed 's/^\([[:blank:]]\{1,\}\)\1/\1/' YourFile

如果确定空格而不是制表符,则可以使用空格代替[[:blank:]]

这样做:如果在开始时出现两次,则用该组替换一组空间,所以这是整个空间的一半

答案 1 :(得分:0)

您可以尝试Perl

perl -pe  's!(^\s+)!$x=length($1)/2;" " x $x!sme ' input_file

使用您给定的输入

$ cat stanislav.txt
    <div class="section" id="contact">
    <div class="container">
        <div class="col-md-12">
            <h4>04</h4>

$ perl -pe  's!(^\s+)!$x=length($1)/2;" " x $x!sme ' stanislav.txt
  <div class="section" id="contact">
  <div class="container">
    <div class="col-md-12">
      <h4>04</h4>

$

答案 2 :(得分:-1)

假设所有前导空白都是空白字符:

maven-bundle-plugin-2.5.5

如果没有,请首先通过$ awk 'match($0,/^ */){$0=sprintf("%*s%s", int(RLENGTH/2), "", substr($0,RLENGTH+1))} 1' file <div class="section" id="contact"> <div class="container"> <div class="col-md-12"> <h4>04</h4> 运行文件。