日安!
我在Ubuntu中有这样的文件:
- ZAF_MM_CYCLE_K051.XLS
- ZAF_MM_CYCLE_K052.XLS
- ZAF_MM_CYCLE_K053.XLS
是文件“ZAF_MM_CYCLE_K036”的副本,文件代码为K 036
文件内容相同
LOADED_AGRS ZAF_MM_CYCLE_K036
AGG_DEFINE 200ZAF_MM_CYCLE_K036 $WERKS K036
AGG_1521 200ZAF_MM_CYCLE_K036
字符串
这里我必须根据文件名用它自己的代码替换代码。
例如:
文件:ZAF_MM_CYCLE_K051.XLS
它代码是K 051,我必须将K 036替换为K 051,因此文件的内容将是:
LOADED_AGRS ZAF_MM_CYCLE_K051
AGG_DEFINE 200ZAF_MM_CYCLE_K051 $WERKS K051
AGG_1521 200ZAF_MM_CYCLE_K051
型
有人能帮帮忙吗?
3条答案
按热度按时间qncylg1j1#
如果所有文件都包含K 036,下面的脚本将帮助您。
字符串
其中
回显“$file”|cut -d'_' -f4| cut -d'.' -f1
将从文件名中提取文件名k 051
sed -i“s/K036/$code/g”“$file”
将用新值替换旧值
所以这对你的案子有帮助。
t5fffqht2#
正如罗恩在评论中提到的,你可以用bash来做这样的事情,以生成具有与索引匹配的修改内容的文件:
字符串
上面将生成当前目录中描述的文件。
cat > ZAF_MM_CYCLE_K${i}.XLS << EOL
使用heredoc生成文件。文件名和内容使用$i
变量作为名称。随着for循环的执行,i
递增,即036
,037
,038
,.051
等,用于相应地生成文件名和内容。如果你想使用类似
sed
的东西来替换内容。在文件所在的目录中运行以下命令应该可以做到:型
基本上,我们对每个文件进行重新命名,通过使用bash参数扩展剥离
ZAF_MM_CYCLE_K
和.XLS
来设置一个变量名,该变量名包含文件名中的数字。一旦推导出数字,使用sed替换给定文件上的内容。sed -i
在原始文件上进行就地替换。希望这对你有帮助!
35g0bw713#
这可能对你有用(GNU sed & parallel):
字符串
为当前目录中以
.XLS
结尾的每个文件构建并执行单独的sed脚本。sed脚本将用文件名中最后一个
_
之后的代码替换K036
,并在最后一个.
之前结束。