如果文件中的字符与提供的模式不同,则停止计数
stop counting if diff character in the file from the provided patterns
我正在尝试创建一个脚本来计算某些模式,例如 aac tgt ttg。通常,DNA 文件应该是包含有效 DNA 字符串的文本文件,其中没有换行符或任何类型的白色 space 字符。 (它将以换行符结束。)这个 DNA 文件应该只包含碱基 a、c、g 和 t 的任意顺序序列。
#! /bin/bash
diffchar=$(grep -cv 'aac\|gtt\|tgt\|cag' )
if [[ $diffchar -eq 1 ]]
then
echo "error"
elif [[ $diffchar -ne 1 ]]
then
count=$(grep -o 'aac\|gtt\|tgt\|cag' | sort -k1,1nr -k2,2 | uniq -c)
# newcount=$(tr -d '\n' $count | awk -f histogram.awk | sort | uniq -c)
# echo "$newcount"
echo $count
fi
由于您所有的搜索模式都是 3 个字符长,您可以将文件分成 3 个字符的块并使用惯用语 sort | uniq -c
创建直方图。
sed '1s/.../\n&/g' yourFile | sed 1d | sort | uniq -c
以上命令打印类似
的内容
1 aac
5 cag
1 gtt
3 tgt
1 XYZ
对于不属于您的模式的所有内容(在本例中为XYZ
),您可以使用
自动抛出错误
histogram=$(sed '1s/.../\n&/g' yourFile | sed 1d | sort | uniq -c)
if echo "$histogram" | grep -vEq '^[0-9 ]+(aac|gtt|tgt|cag)$'; then
echo error
else
echo "$histogram"
fi
我正在尝试创建一个脚本来计算某些模式,例如 aac tgt ttg。通常,DNA 文件应该是包含有效 DNA 字符串的文本文件,其中没有换行符或任何类型的白色 space 字符。 (它将以换行符结束。)这个 DNA 文件应该只包含碱基 a、c、g 和 t 的任意顺序序列。
#! /bin/bash
diffchar=$(grep -cv 'aac\|gtt\|tgt\|cag' )
if [[ $diffchar -eq 1 ]]
then
echo "error"
elif [[ $diffchar -ne 1 ]]
then
count=$(grep -o 'aac\|gtt\|tgt\|cag' | sort -k1,1nr -k2,2 | uniq -c)
# newcount=$(tr -d '\n' $count | awk -f histogram.awk | sort | uniq -c)
# echo "$newcount"
echo $count
fi
由于您所有的搜索模式都是 3 个字符长,您可以将文件分成 3 个字符的块并使用惯用语 sort | uniq -c
创建直方图。
sed '1s/.../\n&/g' yourFile | sed 1d | sort | uniq -c
以上命令打印类似
的内容 1 aac
5 cag
1 gtt
3 tgt
1 XYZ
对于不属于您的模式的所有内容(在本例中为XYZ
),您可以使用
histogram=$(sed '1s/.../\n&/g' yourFile | sed 1d | sort | uniq -c)
if echo "$histogram" | grep -vEq '^[0-9 ]+(aac|gtt|tgt|cag)$'; then
echo error
else
echo "$histogram"
fi