Вы хотите использовать ping
в Solaris, но в вашем пути нет соответствующего каталога (/usr/sbin
).
Чтобы добавить /usr/sbin
к вашему пути, добавьте
PATH="$PATH:/usr/sbin"
в файл ~/.profile
и перезапустите сеанс оболочки.
Далеко ли
awk 'gsub(/-/, "&") < 2' file
ID Ct 1 2 3 4 5 6
3 0 consensus consensus consensus consensus consensus consensus
5 0 - AT AT GC GC AT
8 0 consensus consensus consensus - consensus consensus
понял? Имейте в виду, что ничего не было сказано rg. желаемый результат -вам нужен один выходной файл, имена файлов с префиксом к выходным строкам или новые файлы с именами, похожими на исходные, или что?
РЕДАКТИРОВАТЬ(после комментариев к новым именам файлов):
awk 'gsub(/-/, "&") < 2 {print > (FILENAME ".new")}' /path/to/file/*
Если все файлы находятся в одном каталоге, вы можете использовать цикл for/glob для циклического просмотра каждого файла и выполнения для них команды awk:
for file in /path/to/files/*; do
awk '{
count=0
for (i=3;i<=8;i++) {
if ($i == "-") {
count++
}
}
if ((count <= 1)) {
print
}
}' "$file"
done
Для каждой строки он будет перебирать столбцы 3 -8, если значение столбца равно -
, оно добавляется к count
, если count
больше 1 для строки, оно будет не быть напечатанным.
Perl удобен для такого рода вещей -, в частности, он допускает полевые grep
без явного цикла, результат которого (при вычислении в скалярном контексте )дает количество совпадений. Так например
$ perl -lane 'print if 3 > grep { $_ eq "-" } splice @F, 2' file
ID Ct 1 2 3 4 5 6
3 0 consensus consensus consensus consensus consensus consensus
5 0 - AT AT GC GC AT
8 0 consensus consensus consensus - consensus consensus