Как использовать сокращение в команде sed

Rhys Williams спросил: 13 июня 2018 в 10:47 в: bash

У меня есть этот оператор sed:

#!/bin/bashfind . -type f ! -name 'checkData' ! -name 'correctData' ! -name 'makeStructure' -exec sed -i "1{s|.*|{}|;s|.*/testarea/||;s|/[^/]*$||;s/[/]/-/g;}" {} \;

В настоящее время он делает именно то, что мне нужно, но вместо того, чтобы указывать дату в формате, который я хочу:

2000-01-18

Он возвращает дату как

.- 2000-01-18

Я пытаюсь решить, какую часть мне нужно изменить, чтобы избавиться от .- но я не имею много удачи.
Есть ли способ просто вырезать первые 2 символа из результата?

Спасибо заранее!

1 ответ

l'L'l ответил: 13 июня 2018 в 11:28

Я думаю, вы захотите использовать basename в своей команде find:

find . -type f ! -name 'checkData' ! -name 'correctData' ! -name 'makeStructure' \
-exec basename {} \; | \
sed -i "1{s|.*|{}|;s|.*/testarea/||;s|/[^/]*$||;s/[/]/-/g;}"

Это должно удалить ./ в начале ваших имен файлов.

Дополнительное видео по вопросу: Как использовать сокращение в команде sed

Linux команда sed - редактор текстовых файлов.

Sed и awk — Виктор Ашик

Linux Commands Tutorial - sed basics