В этом вопросе больше внимания уделяется проблеме, связанной с операторами перенаправления.
ls >> $File 2>&1
ls stands for list contents of current directory
>> means append to end of file
$FILE means there is a variable declared as FILE having some value, could be the path to a file.
2>&1 means redirecting both stdin and sterr to the target file, in this case $FILE.
Со всеми строками в одном файле вы можете использовать этот код Perl:
perl -nle '($d,$p)=m{^(\S+?)/\S+/\??(\w+)=}; $a{"$d$p"}=$_ if "$d$p";
END {print $a{$_} for (keys %a)}' input
input
— это файл данных, но вместо этого вы можете передать эту команду Perl. Работа проста. Regex сначала используется для изоляции домена и первого параметра каждой записи. Затем вся строка записывается в словарь, где ранее выделенные части являются ключом. Любое более раннее значение перезаписывается. В конце печатается хэш.
Он производит этот вывод:
test.co.uk/car/interior=chair
www.example.com/1/1/?l=spanish
example.com/car/?wheel=rim
www.example.com/1/1/?selectedTab=live&selectedStream=1
example.co.uk/car/interior=chair
test.com/food/?fruit=banana
С этого входа:
example.com/car/?wheel=tyre
example.com/car/?wheel=rim
test.com/food/?fruit=apple
test.com/food/?fruit=banana
test.co.uk/car/interior=chair
example.co.uk/car/interior=chair
www.example.com/1/1/?l=thai
www.example.com/1/1/?l=thai
www.example.com/1/1/?l=ukrainian
www.example.com/1/1/?l=turkish
www.example.com/1/1/?selectedTab=live&selectedStream=1
www.example.com/1/1/?l=ukrainian
www.example.com/1/1/?l=turkish
www.example.com/store/?l=turkish
www.example.com/1/1/storecommon.js?v=aHpFwmVHuavD&l=dutch
www.example.com/1/1/2/0/?l=english
www.example.com/1/1/9/0/?l=english
www.example.com/1/1/?l=spanish
Существует один сбой с ?v=aHpFwmVHuavD&l=dutch
, состоящим из двух параметров. Возможно, их следует разбивать и обрабатывать один за другим, что усложняет ситуацию. Убедитесь, что это не так. Также обратите внимание, что domain.com
и www.domain.com
не не эффективно одно и то же.