linux - 在 Linux 上使用 cat 连接有序文件

标签 linux shell concatenation cat

我有从 1 到 n 的文件,如下所示:

sim.o500.1 
sim.o500.2
.
.
.
sim.o500.n

每个文件只包含一行。现在我想按从 1 到 n 的顺序连接它们。

我尝试了 cat sim.o500.* > out.dat。遗憾的是,如果例如,这不起作用n 大于 9,因为这会连接 sim.o500.1 后跟 sim.o500.10 而不是 sim。 o500.1 后跟 sim.o500.2

如何使用数字顺序遍历文件名?

最佳答案

由于 * 以非数字排序方式扩展,您最好使用 seq 自己创建序列:这样,10 会在 9 等之后出现。

for id in $(seq $n)
do
   cat sim.o500.$id >> out.dat
done

请注意,我使用 seq 以便您可以使用变量来指示序列的长度。如果这个值恰好是固定的并且事先已知,您可以直接使用范围扩展编写 n 值,例如:for id in {1..23}

关于linux - 在 Linux 上使用 cat 连接有序文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29389980/

相关文章:

linux - 权限被拒绝 - readline() 对关闭的文件句柄

linux - 移植 Qt 项目,调试/发布配置?

linux - 计算文本中出现次数最多的字符

c# - 为什么在多行中连接字符串比在一个语句中添加字符串更快?

linux - 共享无 gui 主机上的 Selenium

python - 在 Ubuntu 系统中无法打开 Jupyter Notebook

c - 如何在 C 中将 2 个 4 位无符号数合并为 1 个 8 位数

python - pandas 在不同索引上连接 DataFrame

linux - 比较两个不同的文件

linux - 在 shell 脚本中执行 shell 命令时出现问题