我有一个白色空格分隔值的文件,我需要将其转换为:
header=tab separated,
records=" ; " separated (space-semicolon-space)
我现在正在做的是:
cat ${original} | awk 'END {FS=" "} { for(i=1; i<=NR; i++) {if (i==1) { OFS="\t"; print $0; } else { OFS=";" ;print $0; }}}' > ${new}
但是只是部分工作,首先,它产生了数百万行,而原始行约有90000行。
其次,标题,应在此修改:
if (i==1) { OFS="\t"; print $0; }
根本没有修改,
另一种选择是使用sed,我可以部分地完成这项工作,但标题仍然保持不变:
cat ${original} | sed 's/\t/ ;/g' > ${new}
答案 0 :(得分:1)
此行应更改文件
中的所有分隔符 awk -F'\t' -v OFS=";" '$1=$1' file
这将使标题保持不变:
awk -F'\t' -v OFS=";" 'NR>1{$1=$}1' file
这将仅更改标题行:
awk -F'\t' -v OFS=";" 'NR==1{$1=$1}1' file
您可以粘贴一些示例,让我们知道您的标题未被修改的原因。