我有一个非常愚蠢的问题,我认为我可以轻松地回答自己...好吧我不能。
我的文件";"
分隔如下:
Grand Hotel ;Yes;No availability;Dus ;11; . 130,00 ;No availability;500 mt from Arena;
我必须将其打印在一个文件中(将其移动到Excel中),如下所示:
Grand Hotel Yes No Availability ...etc etc
这么简单,我找不到一个非常简单的解决方案。 由于我正在使用Debian Bash shell环境,我正在尝试任何东西(bash脚本,awk,grep)......没有任何作用。 请帮忙。 微米。
答案 0 :(得分:3)
所以基本上你想要用F1;F2;F3;...;FN
形式的行转换成文件:
F1
F2
F3
...
FN
我们可以使用tr(1)将分号转换为换行符:
tr ';' '\n' < infile
其中“infile”是CSV输入文件的名称。
答案 1 :(得分:1)
sed
:
echo '....' | sed 's/;/\n/g'
答案 2 :(得分:1)
假设您的文件长于一行,当所有字段位于不同的行中时,新的记录分隔符是什么?
这段awk会在新行上写下每个字段,并在每个记录之间添加一个空行。
awk 'BEGIN {FS=";"; OFS="\n"; ORS="\n\n"} {$1=$1} 1'
需要奇数$1=$1
位来强制awk用新分隔符重写$ 0(即当前记录)。
示例:
$ awk 'BEGIN {FS=";"; OFS="\n"; ORS="\n\n"} {$1=$1} 1' << END
a;b;c
d;e;f
END
输出
a
b
c
d
e
f