[1131971]Есть много способов сделать это. Следующие команды предполагают, что каждая входная строка может иметь только одно число. Я использую этот файл в качестве теста:
sed
$ sed -r 's/([^0-9]*)([0-9]*)([^0-9]*)/1: "\1", 2: "\2", 3: "\3"/" файл.
1:", 2: "1844", 3: "-PAL.Bak".
1: "IMG_", 2: "1959", 3: "bak".
1: "ZER_", 2: "1940", 3: "BAK".
1: "PEN", 2: "225", 3: "bak".
1: "Слово", 2: "1943", 3: "БАК".
perl
$ perl -lpe 's/([^\d]*)(\d*)([^\d])/1: "$1", 2: "$2", 3: "$3"/" файл.
1:", 2: "1844", 3: "PAL.Bak".
1: "IMG_", 2: "1959", 3:". "Пекарь".
1: "ZER_", 2: "1940", 3:". "BAK".
1: "ПЕН", 2: "225", 3:". "Пекарь".
1: "Слово", 2: "1943", 3: "БАК".
grep
$ grep -oP '\d+' file 1844 1959 1940 225 1943
ServerName www.example.com
ServerAlias example.com
ServerAdmin webmaster@example.com
DocumentRoot /internet/com/example/www
ScriptAlias /cgi-bin/ /internet/com/example/cgi-bin
CustomLog /internet/com/example/logs/access.%Y-%m.log combined
ErrorLog /internet/com/example/logs/errors.%Y-%m.log
AddOutputFilter INCLUDES .html
Options +Includes +ExecCGI
DirectoryIndex index.html
ErrorDocument 404 /404.html
Если у вас только один интересующий вас шаблон на линию, вы можете упростить его до
/internet/com/example/www/
/internet/com/example/logs/
/internet/com/example/cgi-bin/
или
Предполагая, что и folder1
, и folder2
находятся в родительской
папке,
parent
folder1
folder2
Вы можете перефразировать цикл for следующим образом:
for file in ../folder2/*.csv
Как правило, вы всегда можете указать абсолютные пути к таким циклам:
for file in /home/username/parent/folder2/*.csv
do
split -l 50000 -d -a 4 "$file" "$file"
done
Вышеупомянутый цикл будет работать независимо от того, в каком каталоге вы находитесь.
Вы можете использовать pushd
и popd
всякий раз, когда вам нужно сменить каталог для некоторых операций, а затем вернуть его к исходному.
pushd /path/to/folder2
for file in *.csv
do
split -l 50000 -d -a 4 "$file" "$file"
done
popd