用bash替换文件中的所有x和y字段

ulk*_*kar 3 bash field masking

我有一个用冒号分隔的文件,比如这个

1:2:3:4:5:6:7:8:9:10
11:12:13:14:15:16:17:18:19:20
Run Code Online (Sandbox Code Playgroud)

等等

每行总是相同数量的字段

我希望能够屏蔽(用*替换字段)该文件每行的第x和第y个字段.假设我想屏蔽第5和第7个字段,以便文件看起来像:

1:2:3:4:*:6:*:8:9:10
11:12:13:14:*:16:*:18:19:20
Run Code Online (Sandbox Code Playgroud)

我怎样才能在bash中实现这样的目标?

谢谢

Fre*_*ihl 5

这样的事情可以帮助你入门

#!/bin/bash

x=5
y=7

awk -F':' -vX="$x" -vY="$y" 'BEGIN{OFS=FS}{$X="*";$Y="*"}{print}' input
Run Code Online (Sandbox Code Playgroud)

输出:

$ ./fields.sh 
1:2:3:4:*:6:*:8:9:10
11:12:13:14:*:16:*:18:19:20
Run Code Online (Sandbox Code Playgroud)