Linux 匹配任何列中的数据,并更改同一行中所有其他列的数据

Linux 匹配任何列中的数据,并更改同一行中所有其他列的数据,linux,csv,for-loop,awk,text-processing,Linux,Csv,For Loop,Awk,Text Processing,我试图弄清楚如何在csv文件中搜索一个值,在本例中为“--”,并将同一行中所有正在进行的列更改为“--” 我一直想用awk做这件事,但我只知道如何检查已知字段 i、 e- 我需要找到一种使用for循环的方法,我想(这就是为什么我要问的)是: 1) 在所有字段中搜索一个值 2) 在字段中查找值,并将同一记录的所有后续字段更改为特定值(即“--”) 任何想法都将受到高度赞赏。我道歉,如果我的措辞不能传达我做过的各种尝试和错误的尝试,我想知道什么工作,而不是向大家展示什么不是。 $ cat file.

我试图弄清楚如何在csv文件中搜索一个值,在本例中为“--”,并将同一行中所有正在进行的列更改为“--”

我一直想用awk做这件事,但我只知道如何检查已知字段

i、 e-

我需要找到一种使用for循环的方法,我想(这就是为什么我要问的)是:

1) 在所有字段中搜索一个值

2) 在字段中查找值,并将同一记录的所有后续字段更改为特定值(即“--”)


任何想法都将受到高度赞赏。我道歉,如果我的措辞不能传达我做过的各种尝试和错误的尝试,我想知道什么工作,而不是向大家展示什么不是。
$ cat file.csv
a,b,---,d,e
1,---,3,4,5
要查找
--
并将同一行中前面的所有列更改为
--

$ awk -F, '{f=0; for (i=NF;i>=1;i--) {$i=(f?"---":$i); f=($i=="---")}} 1' OFS=, file.csv
---,---,---,d,e
---,---,3,4,5
$ awk -F, '{f=0; for (i=1;i<=NF;i++) {$i=(f?"---":$i); f=($i=="---")}} 1' OFS=, file.csv
a,b,---,---,---
1,---,---,---,---
或者,要查找
--
并将同一行中的所有后续(后续)列更改为
--

$ awk -F, '{f=0; for (i=NF;i>=1;i--) {$i=(f?"---":$i); f=($i=="---")}} 1' OFS=, file.csv
---,---,---,d,e
---,---,3,4,5
$ awk -F, '{f=0; for (i=1;i<=NF;i++) {$i=(f?"---":$i); f=($i=="---")}} 1' OFS=, file.csv
a,b,---,---,---
1,---,---,---,---

$awk-F,'{F=0;for(i=1;这正是我一直在寻找的。一个awk-one-liner,可以匹配并更改之前或正在进行的数据格式。谢谢。