我有要重写和修改某些数字值的输入字符串:
输入:src/main.tsx(2,31): error TS2304: Cannot find name 'foo'.
所需输出:src/main.tsx:1:30: error: TS2304: Cannot find name 'foo'.
请注意,数值已减少1。到目前为止,我有以下内容:
sed -E "s/^([^(]+)\(([0-9]+),([0-9]+)\): ((warning)|(error)) (.*)/\1:\2:\3: \4: \7/"
除数字操作外,此方法有效。根据我的阅读,我相信sed
不是适合该工作的工具。我看着awk
,但正则表达式捕获组碰壁了。
我正在使用MacOS。该命令不需要是可移植的。我很高兴使用brew
安装其他工具。
您能不能尝试以下操作。
awk '
match($0,/\([^)]*/){
value=substr($0,RSTART+1,RLENGTH-1)
num=split(value,array,",")
for(i=1;i<=num;i++){
val=(val?val":":"")array[i]-1
}
print substr($0,1,RSTART-1) ":" val substr($0,RSTART+RLENGTH+1)
value=""
}' Input_file
输出如下。
src/main.tsx:1:30: error TS2304: Cannot find name 'foo'.