已关闭。此问题需要更多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代码。
1条答案
按热度按时间w1e3prcc1#
为什么toupper命令不将批号大写?
根据 * 图1* 第四个字段是持有
LOT
,而2569testlot
是在第五个字段,所以你应该目标后,如果你希望2569TESTLOT
如何在awk结构中使用sub命令替换特定位置的字符?
根据GNU Awk用户指南
sub(regexp, replacement [, target])
个搜索目标,将其视为字符串,以查找由正则表达式regexp(...)匹配的最左边的最长子字符串
因此,在使用
sub
时,除了第一次出现之外,您没有其他选择