能够匹配任意长度的回文字的shell脚本 match_palindrome.sh

本文介绍了一个Shell脚本,用于从指定文件中找出长度为特定值的回文字符串。该脚本通过正则表达式匹配来实现,并演示了如何使用它来搜索包含回文串的文本文件。

shell脚本文件名:match_palindrome.sh

内容:

 

[zhang@zhangshibo temp]$ vi match_palindrome.sh
if [ $# -ne 2 ];
then
echo "Usage: $0 filename string_length"
exit -1
fi

filename=$1;

basepattern='/^\(.\)'

count=$(( $2 / 2))

for((i=1;i<$count;i++))
do
basepattern=$basepattern'\(.\)';
done

if [ $(( $2 % 2 )) -ne 0 ];
then
basepattern=$basepattern'.';
fi

for((count;count>0;count--))
do
basepattern=$basepattern'\'"$count";
done

basepattern=$basepattern'$/p'
sed -n "$basepattern" $filename


脚本使用方法:

加入我用一个文本文件:words.txt

其中文本文件内容如下:

used this used used this counting
noon
peep
poop
sees
zhang
shi
bo
hu
xia
shu

那么:

[zhang@zhangshibo temp]$ ./match_palindrome.sh  words.txt 4
noon
peep
poop
sees

### 命令解释 `Java -jar` 用于运行 Java 程序,这里运行的是 Trimmomatic 0.36 软件来进行双端测序数据的修剪操作。以下是对命令各部分的详细解释: - `PE`:表示进行双端测序数据的处理。 - `-threads 4`:指定使用 4 个线程来加速处理过程。 - `-phred33`:指定测序数据的质量编码为 Phred33 格式。 - `s_1_1_sequence.txt.gz` 和 `s_1_2_sequence.txt.gz`:分别是输入的双端测序数据的正向链(R1)和反向链(R2)的压缩文件。 - `lane1_forward_paired.fq.gz`、`lane1_forward_unpaired.fq.gz`、`lane1_reverse_paired.fq.gz` 和 `lane1_reverse_unpaired.fq.gz`:分别是处理后输出的正向链成对、正向链不成对、反向链成对和反向链不成对的压缩 fastq 文件。 - `ILLUMINACLIP:TruSeq3-PE.fa:2:30:10`:这是切除 illumina 接头的参数设置。`TruSeq3-PE.fa` 是包含 illumina 接头序列的文件,`2` 表示在匹配接头序列时允许的最大错配数,`30` 是 palindrome 匹配时所需的最小比对分值,`10` 是 simple 匹配时所需的最小比对分值。 - `LEADING:3`:切除每条 read 开头质量值低于 3 的碱基。 - `TRAILING:3`:切除每条 read 末尾质量值低于 3 的碱基。 - `SLIDINGWINDOW:4:15`:使用滑动窗口方法,窗口大小为 4 个碱基,当窗口内的平均质量值低于 15 时,切除后续的碱基。 - `MINLEN:36`:将长度小于 36 个碱基的 read 过滤掉。 ### 可能出现的问题及解决方案 1. **内存不足错误**: - **问题描述**:运行过程中出现 `OutOfMemoryError` 错误。 - **解决方案**:可以通过增加 Java 虚拟机的内存分配来解决,例如使用 `-Xmx` 参数,命令可以修改为 `Java -Xmx4g -jar trimmomatic-0.36.jar PE -threads 4 -phred33 s_1_1_sequence.txt.gz s_1_2_sequence.txt.gz lane1_forward_paired.fq.gz lane1_forward_unpaired.fq.gz lane1_reverse_paired.fq.gz lane1_reverse_unpaired.fq.gz ILLUMINACLIP:TruSeq3-PE.fa:2:30:10 LEADING:3 TRAILING:3 SLIDINGWINDOW:4:15 MINLEN:36`,这里 `-Xmx4g` 表示将最大堆内存设置为 4GB。 2. **接头文件找不到**: - **问题描述**:运行时提示找不到 `TruSeq3-PE.fa` 文件。 - **解决方案**:检查接头文件的路径是否正确,确保该文件存在于指定的路径下,或者使用绝对路径来指定接头文件。 3. **输入文件格式错误**: - **问题描述**:如果输入的 fastq 文件格式不正确,可能会导致程序无法正常处理。 - **解决方案**:检查输入文件是否为正确的 fastq 格式,可以使用工具如 `fastqc` 来检查文件的质量和格式。 4. **输出文件权限问题**: - **问题描述**:如果没有足够的权限在指定目录下创建输出文件,会导致程序无法正常输出结果。 - **解决方案**:检查输出目录的权限,确保当前用户有写入权限,或者更改输出目录为有写入权限的路径。 ### 示例代码 ```bash Java -Xmx4g -jar trimmomatic-0.36.jar PE -threads 4 -phred33 s_1_1_sequence.txt.gz s_1_2_sequence.txt.gz lane1_forward_paired.fq.gz lane1_forward_unpaired.fq.gz lane1_reverse_paired.fq.gz lane1_reverse_unpaired.fq.gz ILLUMINACLIP:TruSeq3-PE.fa:2:30:10 LEADING:3 TRAILING:3 SLIDINGWINDOW:4:15 MINLEN:36 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值