Bash не может найти сценарии в $PATH [закрыто]

Предполагая, что вы имеете в виду «между« месяцами назад »и« http: // », этот perl скрипт делает то, что вы хотите:

#! /usr/bin/perl

use strict;

my $join=0;

while(<>) {
    if (m/ ago$/) { $join=1 };
    if (m/http:\/\//) { $join=0 ; s/[[:blank:]]/_/g; };
    if ($join == 1) {
        s/\s/_/g;
        s/_(seconds|minutes|hours|days|weeks|months|years|ago_)/ $1/g;
    };
    print;
}

ПРИМЕЧАНИЕ: Я намеренно использовал [[: blank ::]] , а не \ s в первой операции s /// выше, так что изменяются только пробелы и табуляторы в этой строке, а не новые строки. Я хочу, чтобы второй подстановкой заменил все виды пробелов, включая символы новой строки (за исключением пробела, непосредственно предшествующего месяцев назад , и пробела между месяцами и назад ]).

Вывод:

lots of text...
page_5.html months ago___This_is_the_password:_6743412_<http://website.com_etc...
more text...

Это также можно было бы записать в однострочном формате, используя perl -p :

perl -p -e 'if (m/ ago/) { $join=1 }; if (m/http:\/\//) { $join=0 ; s/[[:blank:]]/_/g; }; if ($join == 1) {s/\s/_/g}; s/_(seconds|minutes|hours|days|weeks|months|years|ago_)/ $1/' speld.txt
4
06.02.2019, 18:07
1 ответ

Спасибо terdon за подсказку; с помощью strace -e stat bash -c "newuser" 2>&1 | grep /root/binя обнаружил, что невидимый возврат каретки каким-то образом вклинился перед закрывающей кавычкой в ​​сценарии профиля, создавая фактический путь /root/bin\r. Я стер и снова -набрал путь, и теперь он работает.

4
27.01.2020, 20:54

Теги

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