bash, удалите только половину пробелов из начала строки - PullRequest
0 голосов
/ 05 марта 2019

Мне нужно удалить пробелы из начала строки, но только 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 ]

3 голосов
/ 05 марта 2019

используя группу в sed

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

вы можете использовать пробел вместо [[:blank:]], если вы уверены, что это пробел, а не табуляция.

это действительно: заменить группу изпространство этой группой, если оно появляется дважды в начале, так что это половина полной группы пространства

0 голосов
/ 05 марта 2019

Вы можете попробовать 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>

$
0 голосов
/ 05 марта 2019

Предполагая, что все ваши ведущие пробелы являются пустыми символами:

$ 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>

Если нет, то сначала запустите ваш файл через pr -e -t, чтобы сделать так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...