Как мне «присоединиться» в awk или иным образом обрезать замыкающий /?

Попробуйте использовать команду «экран» перед запуском длительной задачи, а затем, когда вы отсоединитесь, вы сможете снова подключиться к «экрану -r -d», когда вам снова понадобится. Я обнаружил, что при использовании терминала через ssh или другие сетевые подключения они иногда могут прерываться из-за плохого подключения к серверу. запуск его внутри «экрана» устраняет эту проблему.

0
01.09.2020, 22:08
3 ответа

Мы динамически устанавливаем значение OFS в зависимости от того, больше ли полей 3.

$ awk '
  BEGIN { a[1] = FS = "/" }
  {
    OFS = a[(NF>3)]
    print $3, $4
  }
' file
0
18.03.2021, 23:08
$ echo -n "refs/heads/feature" | awk -F '/' '{ print $3 (NF>3 ? FS $4 : "")}'
feature

$ echo -n "refs/heads/feature/foo" | awk -F '/' '{ print $3 (NF>3 ? FS $4 : "")}'
feature/foo
4
18.03.2021, 23:08

Для этого можно использовать cut:используя косую черту в качестве разделителя, печатать с 3-го до последнего поля:

while read branch; do
    echo "$branch" | cut -d/ -f3-
done <<END
refs/heads/feature
refs/heads/feature/foo
END

выходы

feature
feature/foo

Вы также можете использовать -f3-4или -f3,4, если вам нужны только 3-е и 4-е поля.

1
18.03.2021, 23:08

Теги

Похожие вопросы