将字符串连接到每个文件行

时间:2018-04-25 18:37:44

标签: bash shell

我有一个带有名字的文本文件(delete_names.txt)。该文件有大约200行,如下所示:

ABAA742_2012-01-13_decont.fa
ABAA1502_2014-08-08_decont.fa

我想读取文件的每一行并连接字符串" .faa"在每一行的末尾,以获得:

ABAA742_2012-01-13_decont.fa.faa
ABAA1502_2014-08-08_decont.fa.faa

我尝试获取最后一个字符串,但子字符串总是在开头添加。

while read line; do
a='.faa'
echo -E "$line$a"; 
done < delete_names.txt

上面代码的输出:

.faa742_2012-01-13_decont.fa
.faa1502_2014-08-08_decont.fa

获得连接名称后的最终目标是删除目录中的文件。

2 个答案:

答案 0 :(得分:0)

简短 sed + xargs 方法:

sed 's/$/.faa/' delete_names.txt | xargs -I {} rm {}

或者只使用一个 xargs 命令:

xargs -a delete_names.txt -I {} rm {}.faa
  • -a file - 从file而非标准输入
  • 读取项目

答案 1 :(得分:0)

我经常使用gnu-parallel来完成这类工作,可能是这样的:

cat delete_names.txt | parallel rm -rf "{}a"

它的作用是将每个名称传递给parallel命令,并将其分配给一个或多个进程。我刚刚添加了"{}a",但您也可以使用"{.}.faa"删除字符串的扩展名。