我正在尝试使用bash将文件列表(超过1K)的内容合并到一个大文件中.
我尝试了以下cat命令:
cat * >> bigfile.txt
Run Code Online (Sandbox Code Playgroud)
但是这个命令做的是合并所有东西,包括已经合并的东西.
例如file1.txt
content1
Run Code Online (Sandbox Code Playgroud)
FILE2.TXT
content2
Run Code Online (Sandbox Code Playgroud)
file3.txt
content3
Run Code Online (Sandbox Code Playgroud)
file4.txt
content4
Run Code Online (Sandbox Code Playgroud)
bigfile.txt
content1
content2
content3
content2
content3
content4
content2
Run Code Online (Sandbox Code Playgroud)
但我想
content1
content2
content3
content4
Run Code Online (Sandbox Code Playgroud)
在.txt文件中
另一种方式是cat file1.txt file2.txt ...等等......但我不能超过1k文件!
感谢您的支持!
我必须从包含特定字符串的文件(5MB)中获取大文件(27GB)中相同的字符串(和其他信息).为了加快分析速度,我将27GB文件拆分为1GB文件,然后应用以下脚本(在这里有些人的帮助下).但是效率不高(生成180KB文件需要30个小时!).
这是脚本.有比grep更合适的工具吗?或者更有效的方式使用grep?
#!/bin/bash
NR_CPUS=4
count=0
for z in `echo {a..z}` ;
do
for x in `echo {a..z}` ;
do
for y in `echo {a..z}` ;
do
for ids in $(cat input.sam|awk '{print $1}');
do
grep $ids sample_"$z""$x""$y"|awk '{print $1" "$10" "$11}' >> output.txt &
let count+=1
[[ $((count%NR_CPUS)) -eq 0 ]] && wait
done
done #&
Run Code Online (Sandbox Code Playgroud)