【问题标题】:replace a pattern with n number of spaces用 n 个空格替换一个模式
【发布时间】:2019-11-19 20:43:09
【问题描述】:

我是 shell 脚本的新手,感谢有关以下问题的任何帮助。我尝试使用 sedawk 但找不到解决方案。

问题:我有一个固定宽度的文件,其中包含需要用空格/任何特殊字符(如 $)替换的金额字段,并且必须保持记录长度。金额字段的长度可能会有所不同。

例如。如果 sample_file.txt 记录长度为 10,并且该文件中有两个金额字段,分别从 2 和 6 开始,长度分别为 3 和 5,如下所示:

a234b67890

必须修改为:

a$$$b$$$$$

这是用于unix服务器的。

编辑:

此外,记录可以在不应更新的其他位置包含数字字符。所以考虑前面的例子,更新后的输入是:

a234b678901234567890

新的输出应该是:

a$$$b$$$$$1234567890

【问题讨论】:

  • 记录可以在其他不应更改的位置包含数字字符。 那么您如何知道哪些字段需要更改,哪些字段需要保留?

标签: shell unix scripting


【解决方案1】:

尝试使用

inp=a234b67890
echo $inp | sed 's/[0-9]/$/g'
# gives a$$$b$$$$$

唯一的要求是输入应始终为 record_length,因为 sed 将数字替换为特殊字符。

希望这会有所帮助。

【讨论】:

  • 谢谢你。很抱歉没有提供更多细节。记录可以在不应更改的其他位置具有数字字符。让我提供另一个长度为 20 的示例记录 - a234b678901234567890。从 2 和 6 开始的金额字段只需更改为 a$$$b$$$$$1234567890
  • @raghucn 请相应地更新问题并包含此示例。如果可能,请提供您迄今为止所做的详细信息。
猜你喜欢
  • 2010-11-19
  • 1970-01-01
  • 2013-10-31
  • 1970-01-01
  • 2013-05-30
  • 2013-07-03
  • 2018-02-09
  • 1970-01-01
相关资源
最近更新 更多