我有这个awk脚本将文本文件写入.cvs文件中的特定单元格,但我试图让文本垂直显示,而不是水平显示。
`nawk -v r=2 -v c=3 '
BEGIN { FS=OFS=","
}
FNR == NR {
val = sprintf("%s%s%s", val, NR > 1 ? " " : "", $0)
next
}
FNR == r {
$c = val
}
1' file new_one.csv`
想要
the
text
like
this
答案 0 :(得分:0)
答案 1 :(得分:0)
假设csv输入文件如:
a,b,c
d,e,f
g,h,i
k,l,m
和您想要的数据垂直相似:
This file has words horizontally
这是修改脚本的一种方法:
NR==FNR {gsub(" ","\n"); val="\""$0"\""; next}
这将使用换行符替换$0
中的所有单个空格。然后整行被分配到val
,但每个wikipedia's csv page用双引号括起来。
使用我从命令行创建的数据文件运行它(使用的语法与FS/OFS
使用的语法略有不同):
awk -F"," -v r=2 -v c=3 'NR==FNR{gsub(" ","\n"); val="\""$0"\""; next} FNR==r {$c=val} 1' OFS="," vert data
a,b,c
d,e,"This
file
has
words
horizontally"
g,h,i
k,l,m
其中vert
是垂直数据的名称,data
是csv数据文件的名称。请注意,f
处的[2,3]
已替换为vert
文件中已更改的输入。
请注意,您选择的行/列索引仅在data
文件中没有任何字段包含内部逗号并且awk
不是您最好的时才有效一般来说,解析csv文件的朋友。