Encoding 有没有办法在Shell中使用base64对csv中的多个列进行编码?

Encoding 有没有办法在Shell中使用base64对csv中的多个列进行编码?,encoding,base64,Encoding,Base64,我需要用base64编码值替换csv文件的多列,该值应应用于文件的某些列,但保持第一行不受影响,因为第一行包含文件头。我已经尝试了下面的1列,但由于跳过了文件的第一行,我已经让它继续运行,所以它不是 gawk'BEGIN{FS=“|”OFS=“|”}NR>=2{cmd=“echo”$4“| base64-w 0”cmd | getline x;close(cmd);print$1,$2,$3,x}awktest o/p: Qs:它没有在输出中显示标题。我应该怎么做才能在输出中生成标题?我还可以

我需要用base64编码值替换csv文件的多列,该值应应用于文件的某些列,但保持第一行不受影响,因为第一行包含文件头。我已经尝试了下面的1列,但由于跳过了文件的第一行,我已经让它继续运行,所以它不是

gawk'BEGIN{FS=“|”OFS=“|”}NR>=2{cmd=“echo”$4“| base64-w 0”cmd | getline x;close(cmd);print$1,$2,$3,x}awktest
o/p:

Qs:它没有在输出中显示标题。我应该怎么做才能在输出中生成标题?我还可以在这里使用任何循环来替换多个列吗

输入:

10|A|B|C|5|T|R                                     
12|A|B|C|6|eee|ff                        
13|C|D|E|9|dr|xrdd                       
36|Z|V|U|7|xc|xd                                
所需输出:

10|A|B|C|5|T|R                          
12|A|B|encodedvalue|6|encodedvalue|ff                                  
13|C|D|encodedvalue|9|encodedvalue|xrdd                               
36|Z|V|encodedvalue|7|encodedvalue|xd                         

这可能吗?我做了很多研究,但找不到合适的解释。我对壳牌公司不熟悉。请帮忙。非常感谢

看起来您可以对条件句进行排序。这可能不是解决标题问题的最佳方法,但它是直观的

BEGIN { FS="|"; OFS="|" } NR ==1 {print} NR >=2 { cmd="echo  "$4" | base64 -w 0";cmd | getline x;close(cmd); print $1,$2,$3,x}

至于使用循环影响多个列。。。bash中的循环很难实现。从技术上讲,Awk是它自己的语言,并且可能有自己的循环结构IDK。但不清楚你是否需要一个循环。如果只有合理数量的字段需要修改,您可以通过字段索引(以某种方式)参数化现有命令,然后通过管道传递它的实例。它不会像在一次awk中完成所有操作那样出色,但这可能没问题

看起来您可以对条件句进行排序。这可能不是解决标题问题的最佳方法,但它是直观的

BEGIN { FS="|"; OFS="|" } NR ==1 {print} NR >=2 { cmd="echo  "$4" | base64 -w 0";cmd | getline x;close(cmd); print $1,$2,$3,x}

至于使用循环影响多个列。。。bash中的循环很难实现。从技术上讲,Awk是它自己的语言,并且可能有自己的循环结构IDK。但不清楚你是否需要一个循环。如果只有合理数量的字段需要修改,您可以通过字段索引(以某种方式)参数化现有命令,然后通过管道传递它的实例。它不会像在一次awk中完成所有操作那样出色,但这可能没问题

你能评论一下你现有的工具吗?有必要使用gawk吗?听起来您希望使用bash样式的shell工具来实现这一点;有必要吗?您是专门使用bash还是其他shell?(把这些信息也包括在你的标签里也是个好主意。)嗨,我没有其他的工具来做同样的事情。作为数据处理的一部分,我需要这样做,而我唯一可用的选项是bash。在bash中不可能吗?当然可以,这比使用其他语言更难。Python似乎是这项工作的一个不错的选择。如果您仅限于使用专用的文本处理工具,awk/gawk是一个不错的选择,但我无法帮助您解决以下问题:(好的……谢谢你的输入……你能评论一下你现有的工具吗?有必要使用gawk吗?听起来你想使用bash样式的shell工具来实现这一点;有必要吗?你是专门使用bash还是其他shell?(最好也在标记中包含此信息。)嗨,我没有任何其他的工具来做同样的事情。我需要把它作为我数据处理的一部分来做,我唯一可用的选择是bash。在bash中不可能吗?当然可以,这比使用其他语言更难。Python似乎是一个很好的选择。如果你被限制在专门的文本处理上工具,awk/gawk是一个不错的选择,但我不能帮助解决以下问题:(好的…谢谢你的输入…谢谢。将尝试标题部分。关于循环,实际上我在原始文件中有7列由base 64编码。当尝试使用多个echo语句和管道时,它将所有的值聚集在一起…当我尝试使用getline给不同的变量时,也会遇到无效语法的问题..而且我有总共52列,我必须像上面的命令中提到的那样打印。那么是否有可能用每个getline编写所有列。不太确定getline和cmd如何正常工作。我尝试了标题修复,它成功了。非常感谢。但是for循环没有运气。谢谢。我将尝试标题部分。关于循环,实际上我有在原始文件中有7列由base 64编码。当尝试使用多个echo语句和管道时,它会将所有值聚集在一起…当我尝试使用getline给不同的变量时,也会遇到无效语法的问题..另外,我总共有52列必须打印,就像上面的命令中提到的那样。那么是否可以写下每个getline的所有列。不太确定getline和cmd是如何工作的。我尝试了标题修复,它工作了。非常感谢。但是for循环没有运气。