unix 使用awk命令替换字符串中特定位置的字符[已关闭]

eimct9ow  于 5个月前  发布在  Unix
关注(0)|答案(1)|浏览(89)

已关闭。此问题需要更多focused。目前不接受回答。
**要改进此问题吗?**更新此问题,使其仅针对editing this post的一个问题。

2天前关闭。
这篇文章是编辑并提交审查2天前.
Improve this question
我有一个输入文件,它的结构如图1所示。


的数据
到目前为止,我有下面这段代码,它试图在第2行执行以下操作。
1.使所有描绘字符相同
1.将第一个出现的下划线替换为空格。

awk -F "\t" '
            { sub(/\015/,"",$NF) }  # remove CRs
    NR == 1 { next }
    NR == 2 { OFS = "\t";   # needed to replace spaces
              gsub(/ /,"_",$0);
              sub(/_/," ",$1);
              OFS = " "; print }
    NR == 3 { next }
    NR > 3  { print }
  ' $inpfile >| $tmpfile

字符串
我正在寻找的所需输出具有以下格式。
FP5A FP202 LD_BENCH LIFT 2569 TESTLOT....
但是,上述代码的结果是
FP5A FP202_LD台架升降机2569testlot.
我的问题是,如何使用 awk 命令结构替换特定位置的字符?Sub只替换第一个出现的字符。有没有办法用下划线替换第三个出现的空格?
我使用Cygwin来运行这个ksh代码。

w1e3prcc

w1e3prcc1#

为什么toupper命令不将批号大写?
根据 * 图1* 第四个字段是持有LOT,而2569testlot是在第五个字段,所以你应该目标后,如果你希望2569TESTLOT
如何在awk结构中使用sub命令替换特定位置的字符?
根据GNU Awk用户指南
sub(regexp, replacement [, target])
搜索目标,将其视为字符串,以查找由正则表达式regexp(...)匹配的最左边的最长子字符串
因此,在使用sub时,除了第一次出现之外,您没有其他选择

相关问题