Что-то вроде этого:
^.*\/(.*)_SPINK.*$
К сожалению, у меня нет доступа к Informatica для тестирования, но sed
согласен:
echo '/test_files/infa_test/nippy/SrcFiles/JUNK/JUNK_OPS_SPINK_PAE_01-01-01-01-01-99.csv' |
sed -E 's/^.*\/(.*)_SPINK.*$/\1/'
Это дает JUNK_OPS
.
В зависимости от того, как работает REG_EXTRACT
, его можно сократить до
\/([^/]*)_SPINK
Примерно так:
#!/usr/bin/env bash
if [ ! "$#" -eq 1 ]
then
printf "Usage: %s <file>\n" "$0" >&2
exit 1
fi
file="$1"
display_center(){
clear
columns="$(tput cols)"
lines="$(tput lines)"
down=$((lines / 2))
printf '\n%.0s' $(seq 1 $down)
printf "%*s\n" $(( (${#1} + columns) / 2)) "$1"
}
while IFS= read -r line
do
display_center "$line"
read -n 1 -s -r </dev/tty
done < "$file"
Назовите его centered.sh
и используйте так:
./centered.sh centered.sh
Будет напечатана каждая строка из данного файла. Нажмите любую клавишу, чтобы показать следующая строка. Обратите внимание, что он еще недостаточно протестирован, поэтому используйте его с осторожностью. и что он всегда будет печатать строки, начинающиеся с центра экрана, поэтому он будет сделайте длинные линии более заметными внизу.
Первая строка:
#!/usr/bin/env bash
это шебанг . Кроме того, я использую env
для его особенности . Я пытался избежать Bash и написать этот скрипт в оболочке POSIX, но я сдался, потому что особенно read
был очень проблематичным. Вы должны держать в Имейте в виду, что хотя может показаться, что Bash вездесущ, это не так. предустановлен везде по умолчанию, например на BSD или small embedded системы с Busybox.
В этой части:
if [ ! "$#" -eq 1 ]
then
printf "Usage: %s <file>\n" "$0" >&2
exit 1
fi
мы проверяем, указал ли пользователь ровно один параметр, и если нет, мы печатаем информацию об использовании в стандартную ошибку и вернуть 1, что означает ошибку для родительский процесс.
Здесь
file="$1"
мы назначаем параметр имени файла, который пользователь передал переменной file
, который мы будем использовать позже.
Это функция, которая печатает текст по центру:
display_center(){
clear
columns="$(tput cols)"
lines="$(tput lines)"
down=$((lines / 2))
printf '\n%.0s' $(seq 1 $down)
printf "%*s\n" $(( (${#1} + columns) / 2)) "$1"
}
В Bash нет прототипов функций, поэтому вы не можете знать, сколько функция параметров принимает заранее -, что принимается только один параметр, который представляет собой строку для печати и разыменовывается с помощью $1
. Эта функция сначала очищает экран,затем перемещается вниз на строки / 2 от верхней части экрана, чтобы достичь центр экрана, а затем печатает центральную линию, используя метод Я позаимствовал из здесь .
Это цикл, который считывает входной файл, переданный пользователем, и вызывает display_center()
функция:
while IFS= read -r line
do
display_center "$line"
read -n 1 -s -r </dev/tty
done < "$file"
read
используется с -n 1
для чтения только одного символа, -s
для эхо-вход, поступающий с терминала, и -r
–предотвращают искажение обратная косая черта . Ты подробнее о read
можно узнать в help read
. Мы также читаем из /dev/tty напрямую, потому что стандартный ввод уже указывает на файл -, если мы не говорил read
читать из /dev/tty, скрипт очень быстро вывести все строки из файла и выйти сразу, не дожидаясь пользователю нажать клавишу.
Вы можете сделать это с пакетом dialog
:
file=lorem #Path to the file to be displayed
ln=1 #Current line number to be displayed
nlines=$(wc -l "$file"|cut -f1 -d" ") #Total number of lines of file
while [ "$ln" -le "$nlines" ]; do
line=$(sed -n "$ln p" "$file") #sed gets current line
if dialog --yes-label Previous --no-label Next \
--default-button no --yesno "$line" 5 100; then
ln=$((ln-1))
else
ln=$((ln+1))
fi
done
Это текстовая -презентация (Я серьезно отнесся к "голым -слайд-шоу костей"! ), не требуется сеанс X, отображающий по одной строке за раз. Вы можете идти назад или вперед, и он заканчивается после последней строки.
Вот навороченный -вкладыш:
sed ':a;s/^.\{1,77\}$/ &/;ta;s/\( *\)\1/\1/; s/.*/\n\n\n\n\n\n\n\n\n\n\n&\n\n\n\n\n\n\n\n\n\n\n/' < input.txt | more
Это предполагает окно терминала 80x24. Команда sed
центрирует каждую строку текста, а затем добавляет достаточное количество начальных и конечных новых строк для вертикального центрирования. Команда more
позволяет пользователю листать страницы.