Я столкнулся с некоторой проблемой при игре с 'grep';и, вероятно, о вкладке.У меня есть два файла, показанных ниже, оба из которых разделены табуляцией.
FM_DEL_50r.bed
chr1 3392391 3658426 DEL chr1 3392364 3658425 DEL
chr1 4011952 4392064 DEL chr1 4011953 4392062 DEL
chr1 4468526 4665322 DEL chr1 4468523 4665322 DEL
FC_DEL_50r.bed
chr1 2612264 2613324 DEL chr1 2612205 2613007 DEL
chr1 3392391 3658426 DEL chr1 3392391 3658426 DEL
chr1 4011952 4392064 DEL chr1 4011953 4392060 DEL
Я надеюсь отобразить некоторые строки, которые появляются в обоих файлах:
cat FC_DEL_50r.bed |grep `cat FM_DEL_50r.bed |head -2|tail -1|awk '{print $2"\t"$3}'`
Однако есть ошибка:
grep: 4392064: No such file or directory
Я пытался cat FM_DEL_50r.bed |head -2|tail -1|awk '{print $2"\t"$3}'
, на самом деле он работает и выдает 4011952 4392064
Так что, может быть, мы не можем grep форматировать как «число» \ t «число»? Thx
править: какой я глупый. Я должен использовать двойные кавычки .......... (Сначала я использовал одинарные кавычки и не работал ...)
cat FC_DEL_50r.bed |grep "`cat FM_DEL_50r.bed |head -2|tail -1|awk '{print $2"\t"$3}'`"
Дополнительные вопросы: я написал скрипт bash, основанный на приведенных выше вопросах:
#!/bin/bash
for((c=1;c<=542;c++))
do
LINE=`head -$c FM_DEL_50r.bed|tail -1`
P1=`cat $LINE|awk '{print $1"\\t"$2"\\t"$3}'`
GREP1=`cat FC_DEL_50r.bed |grep "$P1"`
X1=`cat $GREP1 |awk '{print $5"\\t"$6"\\t"$7}'`
P2=`cat $LINE|awk '{print $5"\\t"$6"\\t"$7}'`
GREP2=`cat MC_DEL_50r.bed |grep "$P2"`
X2=`cat $GREP2 |awk '{print $5"\\t"$6"\\t"$7}'`
if [ $X1 -eq $X2 ]
then
echo "$LINE"\t"$X1"
fi
done
Однако он выдает
cat: chr1: No such file or directory
cat: 27122653: No such file or directory
cat: 27446984: No such file or directory
cat: DEL: No such file or directory
cat: chr1: No such file or directory
cat: 27880115: No such file or directory
cat: 28225069: No such file or directory
cat: DEL: No such file or directory
Кажется, он разбивает все столбцы одной строки и не может их распознатьВ чем проблема на этот раз? Thx