Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在不打开文件的情况下使用bash提取vdate表单nc头_Bash_Header_Netcat - Fatal编程技术网

在不打开文件的情况下使用bash提取vdate表单nc头

在不打开文件的情况下使用bash提取vdate表单nc头,bash,header,netcat,Bash,Header,Netcat,我必须通过将vdate从其标题添加到其标题来更改几百个文件的标题 如果vdate=19971222,则我希望该nc文件的名称变为重新运行4\u降速\u 19971222.nc 我知道我可以通过ncdump-h filename找到vdate(参见下面的示例标题) 但是,我必须手动打开所有文件并手动更改文件的标题。。。数以百计的文件。我更喜欢制作一个可以自动完成的bash 我相信一定有更智能的方法从nc头中提取vdate,你们能帮我吗 谢谢大家! 从理论上讲,这样做应该是可行的: #! /bin/

我必须通过将vdate从其标题添加到其标题来更改几百个文件的标题

如果vdate=19971222,则我希望该nc文件的名称变为重新运行4\u降速\u 19971222.nc

我知道我可以通过
ncdump-h filename
找到vdate(参见下面的示例标题)

但是,我必须手动打开所有文件并手动更改文件的标题。。。数以百计的文件。我更喜欢制作一个可以自动完成的bash

我相信一定有更智能的方法从nc头中提取vdate,你们能帮我吗


谢谢大家!

从理论上讲,这样做应该是可行的:

#! /bin/sh
for file in rerun4_*_spindown_* ; do

  vdate=$(ncdump -h $file | awk '$1 == ":vdate" { print $3 }')
  new_name="rerun4_spindown_$vdate.nc"
  mv "$file" "$new_name"
done

我无法访问netCDF文件-需要进行更多测试。

您可以发布示例输入和输出吗?特别是,“header”是输入文件的第一行吗?此外,您还提到了文件的“标题”——您是指文件名吗?你有一些你已经尝试过的代码吗?@dash-o我已经用标题的例子修改了文本。这是nc文件包含的“隐藏”信息,而不是您读取的数据的一部分。我尝试了
ncdump-h-vdate filename
,但没有成功。我知道人们使用
ncatted-O-avdate、global、O、l、
来更改原始的vdate。我不知道如何使用它来提取它并将其用作文件名。你能澄清一下所有输入文件的通用模式是什么吗?例如,它是重新运行4_spindown_nnnnn.nc,在哪里修改nnnnnn,还是其他类似的东西。@dash-o就是这样。所有输入文件都有这个“重新运行4\u降速”\unnnnnnnnnn.,这很有效!伟大的然而,它不理解extglob命令,但这似乎并不影响代码的功能。非常感谢@Linda-extglob是另一个脚本的遗留部分。您可以忽略它。很乐意提供帮助,欢迎使用堆栈溢出。如果此答案或任何其他答案解决了您的问题,请将其标记为已接受。
#! /bin/sh
for file in rerun4_*_spindown_* ; do

  vdate=$(ncdump -h $file | awk '$1 == ":vdate" { print $3 }')
  new_name="rerun4_spindown_$vdate.nc"
  mv "$file" "$new_name"
done