【发布时间】:2016-01-29 22:15:09
【问题描述】:
我有一个小问题要问你。 但首先,我知道还有其他方法可以做我想做的事情(我已经制作了一个小的 python 脚本来做到这一点),但是出于我自己的好奇心,我想知道是否有办法做使用 SED。
所以,例如:这是一个 CSV 文件,例如:
12345678,yan solo
23456789,luke skywalker
34567890,leia organa
这里有一个名为“SOMESCRIPT”的 bash 脚本,它会将参数转换为其他内容。例如。 :
~$ ./SOMESCRIPT 12345678
abcd
所以,我想要做的是:使用 SED 内部的脚本重新生成具有转换值的 CSV。
这里是输出示例:
abcd,yan solo
efgh,luke skywalker
ijkl,leia organa
一些想法:
~$ cat somecsv.csv | sed "s/\(.*\),/\1/g"
--> 正则表达式捕获要转换的部分并将其保存到\1中的堆栈中
~$ cat somecsv.csv | sed "s/\(.*\),/`SOMESCRIPT `\1/g"
--> 对于每一行,SOMESCRIPT 被执行,但在 \1 的打印之前
~$ cat somecsv.csv | sed "s/\(.*\),/`SOMESCRIPT \1`/g"
--> 对于每一行,SOMESCRIPT 都会执行,但是 \1 不被识别为 shell 变量
所以,基本上,问题是:是否可以将堆栈值 \1 作为 shell 参数传递给 SOMESCRIPT ?
【问题讨论】: