我有一个文本文件是在有人从Excel粘贴到纯文本电子邮件中时创建的。最初有五个专栏。
Column header 1
Column header 2
...
Column header 5
Row 1, column 1
Row 1, column 2
etc
有些数据是单字,有些则是空格。使用unix utils将这些数据转换为列格式文本的最佳方法是什么?
编辑:我正在寻找以下输出:
Column header 1 Column header 2 ... Column header 5
Row 1 column 1 Row 1 column 2 ...
...
我能够通过在每行的末尾添加一个逗号手动将数据转换为vim中的CSV来实现此输出,然后用J手动连接每组5行。然后我通过{{1运行csv获得所需的输出。但下次出现时,必须有更好的方法。
答案 0 :(得分:1)
也许是一个人,一个人,最好的"方式,但它应该工作:
perl -ne 'BEGIN{$fields_per_line=5; $field_seperator="\t"; \
$line_break="\n"} \
chomp; \
print $_, \
$. % $fields_per_row ? $field_seperator : $line_break; \
END{print $line_break}' INFILE > OUTFILE.CSV
只需替换" 5"," \ t" (tabspace)," \ n" (换行符)。
答案 1 :(得分:0)
您必须使用使用readline和counter的脚本。当程序到达你想要的那一行时,使用cut命令和空格作为稀释计来获得你想要的单词
counter=0
lineNumber=3
while read line
do
counter += 1
if lineNumber==counter
do
echo $line | cut -d" " -f 4
done
fi