我有这样的文件
d1000 1000
d1001 100
d1002 10
d1003 1
我想修改长度不等于 4 的第二列。但我只想打印已修改的行,因此第 2 列中的原始文本保留在第 2 列中,并且更改打印在第 3 列中,并增加一个数字。
期望的输出:
d1001 100 1101
d1002 10 1102
d1003 1 1103
我正在尝试这些方面,但无法获得语法或结果
awk -v n=1100 '((length($2)!=4 && length($2)>0) {new=($2=++n)}; {print $1, $2, new}' file
您可以像这样将
print
现有行 ($0
) 和一个新字段,,
在参数之间使用输出分隔符。输出:
如果您需要对输出进行任何其他格式设置,可以使用
printf
function. 这是对齐的示例:输出
使用Raku(以前称为 Perl_6)
这个问题类似于最近的一个问题,您可以稍微修改该问题的 Raku 答案。
简而言之(与上一个问题相比),询问
if .words[1]
第二列是否可以匹配一个只包含\d**0..3
零到三个数字的字符串,如果是,则打印出 all.words
,然后是第三列返回$i
计数器,从1100
通过 递增的基础值++
。样本输入:
样本输出:
https://unix.stackexchange.com/a/703436/227738
https://raku.org