我在带有制表符分隔符的CSV文件中的约80列中有一些数据。我需要在Windows中对其进行转换,以便所有列都以“ \ t”分隔。 例如。
输入:
Reporting Standard_WeekName WHS_Code Operated_by Country_Code Standard_Customer_Name Reporting Date Customer_Region
201824 A05 DUBAI LL NXX AE EMEA <next line character> Customer
所需的输出:
"Reporting Standard_WeekName"|"WHS_Code"|"Operated_by"|"Country_Code"|"Standard_Customer_Name"|"Reporting Date"|"Customer_Region"
"201824"|"A05"|"DUBAI"|"LL"|"NXX"|"AE"|"EMEA <next line character> Customer"
请注意,在Customer_region列中,数据为EMEA客户,中间是下一行字符。
预先感谢您的帮助。
答案 0 :(得分:0)
sed -e 's/^/"/' -e 's/$/"/' -e 's/\t/"\t"/g' file > outfile
这由-e命令传递的三个不同的替换组成。
前两个用双qoute(“)替换begin(^)和end($)
第三个选项卡将每个选项卡替换为带有双qoutes的选项卡
答案 1 :(得分:0)
我认为使用Windows上的“工具” 来尝试(某种自虐)很有趣,因此请将此脚本另存为replace.vbs
:>
Set TabobjRegEx = CreateObject("VBScript.RegExp")
TabobjRegEx.Global = True
TabobjRegEx.Pattern = "\t"
Do While Not WScript.StdIn.AtEndOfStream
Line = WScript.StdIn.ReadLine()
Line = TabobjRegEx.Replace(Line,Chr(34) & Chr(9) & Chr(34))
Line = Chr(34) & Line & Chr(34)
WScript.Stdout.WriteLine(Line)
Loop
现在您可以运行:
CSCRIPT /NOLOGO replace.vbs < YourFile.txt > NewFile.txt
注释: