在通配符输入上写入新文件名的方法?

用户名

我有Inix终端从科学的实习我去过的一部分了一定的经验,主要是使用一些实用工具,比如grepawksed,但有一件事我一直在试图找出了一段时间,将真正使我更有效率我必须做数字处理。

我有一个脚本run.awk,可以对大量海量文本文件进行一些操作。照原样,它将获取文件chloride.out,从文件中提取数据并写入chloride.cm

无论如何,我是否可以使此脚本接受*.out*.cm基于shell中的初始通配符短语编写文件?

我编写的用于处理大量数据的脚本数量(我必须进行一百多次迭代)实在令人讨厌。

理想情况下,我想知道是否可以通过外壳对所有脚本执行此操作。如果无法在Shell中自动执行awk脚本或执行等效操作,我是否可以至少以与上述类似的方式来自动执行脚本?

你好

您当然可以通过通配符使awk处理多个文件。一个建议是将其保留run.awk为通用的“函数”,该函数将单个文件放入并生成单个输出文件,然后从另一个脚本调用它,然后该脚本将负责吸收输入和输出文件。

例子

这将是一个Bash脚本,我们可以称之为awk_runner.bash

#!/bin/bash

for ifname in *.out; do 
  ofname=${ifname/.out/.cm}
  printf "IN: %s, OUT: %s\n" $ifname $ofname
  printf "running run.awk with %s & %s\n\n" $ifname $ofname

  run.awk $ifname $ofname
done

样品运行

我创建了一个示例目录,其中包含一些测试文件。

$ touch file{1..4}.out

这导致制作了4个文件:

$ ls -1
file1.out
file2.out
file3.out
file4.out

现在我们运行脚本:

$ ./awk_runner.bash
IN: file1.out, OUT: file1.cm
running run.awk with file1.out & file1.cm

IN: file2.out, OUT: file2.cm
running run.awk with file2.out & file2.cm

IN: file3.out, OUT: file3.cm
running run.awk with file3.out & file3.cm

IN: file4.out, OUT: file4.cm
running run.awk with file4.out & file4.cm

在每行以“ running ...”开头之后,我们的脚本可以从此处运行。

列表中的文件

说而不是使用通配符,而是使用其中*.out包含文件名列表的文件,例如:

$ cat filelist.txt 
file1.out
file2.out
file3.out
file4.out

我们可以使用此脚本的修改版本,该版本将使用while循环而不是for循环。现在,我们将该脚本的变体称为awk_file_runner.bash

#!/bin/bash

while read ifname; do 
  ofname=${ifname/.out/.cm}
  printf "IN: %s, OUT: %s\n" $ifname $ofname
  printf "running run.awk with %s & %s\n\n" $ifname $ofname

  run.awk $ifname $ofname
done < filelist.txt

这个版本的脚本从文件中读取输入filelist.txt

done < filelist.txt

然后,对于while循环的每一轮,我们都使用read命令从输入文件中读取一行。

while read ifname; do

然后执行以同样的方式作为第一个脚本,它将运行所有awk脚本run.awk,因为它遍历文件的每一行。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Notepad ++新文件名

来自分类Dev

Vim更新文件名

来自分类Dev

Sublime Text 2不提示输入新文件名

来自分类Dev

获取基于文件名python的最新文件

来自分类Dev

将文件名复制到新文件

来自分类Dev

如何生成新的 GUID,然后使用该 GUID 作为文件名写入指定路径中的新文件?

来自分类Dev

如何在FileWatcher中更新文件名

来自分类Dev

获取上载器的新文件名

来自分类Dev

用新文件名继承StreamWriter

来自分类Dev

节点multer返回新文件名

来自分类Dev

检查文件名是否存在并在Google脚本中更新文件名

来自分类Dev

通过FSEventsFramework检测旧文件名和新文件名

来自分类Dev

如何编码我的程序来为目录中的每个新文件创建新文件名?

来自分类Dev

在Android中使用“文件文件=新文件(文件名)”将文件保存到何处

来自分类Dev

Lua读取文件并写入新文件

来自分类Dev

批处理文件重命名,从txt文件读取旧文件名和新文件名

来自分类Dev

创建包含文件名的新文件并计数每个文件

来自分类Dev

脚本仅将多个文件的一个文件名输出到新文件

来自分类Dev

命令行:如果文件名已经存在,则使用新文件名创建文件

来自分类Dev

命令行:如果文件名已经存在,则使用新文件名创建文件

来自分类Dev

展平目录,但在新文件名中保留目录名

来自分类Dev

更新文件时如何在载波中保留相同的文件名(在Rails中)

来自分类Dev

使用文件名读取最新文件包含python中的字符串

来自分类Dev

PHP使用子目录作为新文件名重命名所有文件

来自分类Dev

Linux命令根据文件名获取最新文件

来自分类Dev

Hadoop从Mapper写入新文件

来自分类Dev

Python元素树写入新文件

来自分类Dev

将数据写入新文件的异常

来自分类Dev

更改CSV并写入新文件

Related 相关文章

  1. 1

    Notepad ++新文件名

  2. 2

    Vim更新文件名

  3. 3

    Sublime Text 2不提示输入新文件名

  4. 4

    获取基于文件名python的最新文件

  5. 5

    将文件名复制到新文件

  6. 6

    如何生成新的 GUID,然后使用该 GUID 作为文件名写入指定路径中的新文件?

  7. 7

    如何在FileWatcher中更新文件名

  8. 8

    获取上载器的新文件名

  9. 9

    用新文件名继承StreamWriter

  10. 10

    节点multer返回新文件名

  11. 11

    检查文件名是否存在并在Google脚本中更新文件名

  12. 12

    通过FSEventsFramework检测旧文件名和新文件名

  13. 13

    如何编码我的程序来为目录中的每个新文件创建新文件名?

  14. 14

    在Android中使用“文件文件=新文件(文件名)”将文件保存到何处

  15. 15

    Lua读取文件并写入新文件

  16. 16

    批处理文件重命名,从txt文件读取旧文件名和新文件名

  17. 17

    创建包含文件名的新文件并计数每个文件

  18. 18

    脚本仅将多个文件的一个文件名输出到新文件

  19. 19

    命令行:如果文件名已经存在,则使用新文件名创建文件

  20. 20

    命令行:如果文件名已经存在,则使用新文件名创建文件

  21. 21

    展平目录,但在新文件名中保留目录名

  22. 22

    更新文件时如何在载波中保留相同的文件名(在Rails中)

  23. 23

    使用文件名读取最新文件包含python中的字符串

  24. 24

    PHP使用子目录作为新文件名重命名所有文件

  25. 25

    Linux命令根据文件名获取最新文件

  26. 26

    Hadoop从Mapper写入新文件

  27. 27

    Python元素树写入新文件

  28. 28

    将数据写入新文件的异常

  29. 29

    更改CSV并写入新文件

热门标签

归档