Существует ограничения как для количества аргументов, так и для комбинированной длины аргументов. Это не однородные значения, а зависящие от системы.
Обычно такие проблемы решаются с помощью Xargs
.
Но мне кажется, что вы используете , ошибочно
. Резак
ожидает только файлы - аргументы. Это $ {bwa_at}
Огромный список файлов? Если это код Python, то вам нужно что-то вроде
echo "${BWA_AT}" | cut
, если это действительно это список файлов, то вам нужно что-то вроде
echo "${BWA_AT}" | xargs cut
с необходимыми вариантами
, в зависимости от сепаратора.
С awk
:
awk 'FNR==NR{a[$1]=$2"\t"$3} FNR!=NR{split($2,b,"-"); $0=$0"\t"a[b[1]];print}' file1 file2
FNR == NR
применяется к первому файлу file1
:
a [ $ 1] = $ 2 "\ t" $ 3
заполните массив a
вторым и третьим полями и в качестве индекса используйте первое поле. FNR! = NR
применяется ко второму файлу file2
:
split ($ 2, b, "-")
разделяет 2-е поле по адресу -
. $ 0 = $ 0 "\ t" a [b [1]]
добавляет два значения в строку. print
печатает строку. Вывод:
text1 ABC1-AB text2 text3 1 3
text2 ABC2-AB text1 4 3
text3 ABC1-CD text2 1 3
text4 ABC5-AB text3 text4
У меня та же проблема, и я попытался создать симблек из iptables
в iptables-save
, который был рекомендован на их вики-странице DD-WRT _ V24 _ .26 _ iptables-save , но это не сработало для меня.
Для решения этой проблемы был создан файл оболочки с содержимым /tmp/.ipt
.
/jffs/bin/iptables-save :
#!/bin/sh
cat /tmp/.ipt
ПРИМЕЧАНИЕ: вики-страница ( DD-WRT _ V24 _ .26 _ iptables-save ) посвящена «Firewall Builder» - я не тестировал это решение с помощью «Firewall Builder».
-121--60862-Я понял, что программа должна быть запущена как sudo, чтобы она могла получить доступ к порту... Надеюсь, это поможет кому-то в будущем.
ОТРЕДАКТИРОВАНО: программе c, которой я обладаю, требуется разрешение sudo для подключения сокета к порту UDP 53000 и отправки пакетов через этот порт.
-121--195218-Тестирование с использованием BASH.
while read LINEFILE2
do
printf "$LINEFILE2" >> File3
while read LINEFILE1
do
read PATTERN ADDITIONS <<EOF
$LINEFILE1
EOF
[ ! -z "$PATTERN" ] && [ ! -z $(echo "$LINEFILE2" | cut -f2 | grep "$PATTERN") ] && {
printf "\t$ADDITIONS\n" >> File3
}
done < File1
done < File2
Если требуется найти образец внутри всей линии, а не только в столбце 2 можно получить команду cut
из конструкции трубы.