如何从 UNIX 文件中提取数据?

S.Y*_*ICI 2 files extract

我是初学者

我想从文件中提取数据,文件以“START OF TEC MAP”开头并以“END OF TEC MAP”结尾。我怎样才能得到这个特定的间隔?我应该使用哪些命令?

文件:codg0010.17i.Z

kar*_*rel 5

打开终端并输入:

uncompress -c codg0010.17i.Z | sed -n '/START OF TEC MAP/,/END OF TEC MAP/p' 
Run Code Online (Sandbox Code Playgroud)

要将结果输出到输出文件,请键入:

uncompress -c codg0010.17i.Z | sed -n '/START OF TEC MAP/,/END OF TEC MAP/p' >> output.txt
Run Code Online (Sandbox Code Playgroud)

-i选项sed用于就地编辑的文件就是。要从存档中提取文件并进行编辑,而不是将输出写入 output.txt:

uncompress codg0010.17i.Z # This archive has only 1 file in it named codg0010.17i. 
sed -ni '/START OF TEC MAP/,/END OF TEC MAP/p' codg0010.17i
Run Code Online (Sandbox Code Playgroud)

这将打印START OF TEC MAP之间的所有文本END OF TEC MAP,但是该文件不仅包含一个 TEC MAP 的数据,还包含按顺序排列的 25 个不同 TEC MAP 的数据,并且上述命令将所有 25 个映射的数据一起打印.

解释

sed命令的部分具有以下形式:

sed -n '/WORD1/,/WORD2/p' /path/to/file
Run Code Online (Sandbox Code Playgroud)
  • WORD1是开始字符串(START OF TEC MAP
  • WORD2是结束字符串(END OF TEC MAP
  • p是用于打印特定行的 sed 命令,在这种情况下,所有行包括START OF TEC MAPEND OF TEC MAPEND OF TEC MAP
  • /path/to/file 如果当前目录与包含文件的目录相同,则是文件的路径或简单的名称。