Сохранить вывод команды cat в файл - PullRequest
0 голосов
/ 18 июня 2019

Я сохраняю статус выполнения команды git clone, используя приведенное ниже,

git clone --progress "https://giturl/repo.git" &> "/var/log/bitbucket.log

При использовании команды cat для просмотра содержимого файла, например

cat bitbucket.log

Я получаю следующий вывод, который мне нужен,

Cloning into 'xyz'...
POST git-upload-pack (342 bytes)
remote: Counting objects: 2682, done.
remote: Compressing objects: 100% (1237/1237), done.
remote: Total 2682 (delta 1395), reused 2514 (delta 1316)
Receiving objects: 100% (2682/2682), 21.63 MiB | 10.32 MiB/s, done.
Resolving deltas: 100% (1395/1395), done.

Однако, когда я открываю файл bitbucket.log, используя nano, любой другой редактор или непосредственно из WinSCP, я получаю следующий вывод:

Cloning into 'xyz'...
POST git-upload-pack (342 bytes)
remote: Counting objects: 2682, done.[K
remote: Compressing objects:   0% (1/1237)   [K
remote: Compressing objects: 100% (1237/1237), done.[K
Receiving objects:   0% (1/2682)
...
Receiving objects:  98% (2629/2682), 15.67 MiB | 10.32 MiB/s   
remote: Total 2682 (delta 1395), reused 2514 (delta 1316)[K
Resolving deltas: 100% (1395/1395)   
Resolving deltas: 100% (1395/1395), done.

Я пропустил большинство строк, но вы можете понять, как это, он показывает прогресс от 0% до 100% для всех действий.

Есть ли способ сохранить вывод команды cat в файл, точно так же, как показано в первом выводе выше, пожалуйста?

Спасибо.

1 Ответ

2 голосов
/ 18 июня 2019

вот три простых варианта (один и два совпадают с моими комментариями выше):

  1. Вы можете использовать подстановку текста на основе регулярных выражений в редакторе, таком как vim, для редактирования файла, т.е. открытьфайл, введите : и выполните подстановку %s/^.*^K//, где ^K записывается, набрав Ctrl + V , затем Ctrl + K
  2. вы можете использовать sed для редактирования файла таким же образом:
    sed -i '' $'s/^.*\x0B//' /var/log/bitbucket.log
  3. вы можете использовать sed для редактирования потокапоскольку он в первую очередь передается в файл:
    git clone --progress "https://giturl/repo.git" 2>&1 | sed $'s/^.*\x0B//' >/var/log/bitbucket.log

, когда я запускаю git clone --progress в моей системе, я получаю символы cr вместо вертикальных вкладок, поэтому у меня изначально было \r вместо \x0B.

...