Нет такого инструмента к моему знанию. Однако можно легко записать такую программу, так как необходимо сделать, определяют самую длинную группу компонентов.
Пример "острота":
echo /abc/bcd/cdf | awk -vpath=/abc/bcd/chi/hij -F/ '{ OFS="\n";len=0; split(path, components); for (i=1; i<=NF; i++) if($i == components[i])len+=1+length($i);else break;print substr($0, 1, len - 1), substr($0, len + 1), substr(path, len + 1);exit;}
Отформатированная версия с комментариями:
$ cat longest-path.awk
#!/usr/bin/awk -f
BEGIN {
FS="/"; # split by slash
}
{
len=0; # initially the longest path has length 1
split(path, components); # split by directory separator (slash)
for (i=1; i<=NF; i++) { # loop through all path components
if ($i == components[i]) {
len += 1 + length($i);
} else {
break; # if there is a mismatch, terminate
}
}
print substr($0, 1, len - 1); # longest prefix minus slash
print substr($0, len + 1); # remainder stdin
print substr(path, len + 1); # remainder path
exit; # only the first line is compared
}
$ echo /abc/bcd/cdf | ./longest-path.awk -vpath=/abc/bcd/chi/hij
/abc/bcd
cdf
chi/hij
Конвейер вывода для свертывания, чтобы обернуть вывод по указанной ширине (по умолчанию 80):
watch -d "ps -efww | grep '[j]ava' | fold -s"
-w
of ps
для широкого вывода и дважды для неограниченного вывода. fold -s
разбивается на пробелы. grep
. Я изменил java
на [j] ava
. Таким образом
процесс grep
не будет соответствовать самому себе в выводе ps
. Дополнительно:
Вы также можете попробовать указать ширину; это позволит полностью использовать ширину экрана.
В моем случае следующий результат дает идеально сформированный результат. Настройте параметр ширины в соответствии с размером монитора / терминала:
watch -d "ps -ef --width 1000 | grep java | grep -v grep "