我有以下 JSON 文件:
{
"data": [
{
"displayName": "First Name",
"rank": 1,
"value": "VALUE"
},
{
"displayName": "Last Name",
"rank": 2,
"value": "VALUE"
},
{
"displayName": "Position",
"rank": 3,
"value": "VALUE"
},
{
"displayName": "Company Name",
"rank": 4,
"value": "VALUE"
},
{
"displayName": "Country",
"rank": 5,
"value": "VALUE"
},
]
}
Run Code Online (Sandbox Code Playgroud)
我想要一个这种格式的 CSV 文件:
First Name, Last Name, Position, Company Name, Country
VALUE, VALUE, VALUE, VALUE, VALUE, VALUE
Run Code Online (Sandbox Code Playgroud)
这可以通过仅使用jq吗?我没有任何编程技能。
我使用 CSV 文件,有时需要从命令行快速检查行或列的内容。在许多情况下cut,head、tail、 和朋友会完成这项工作;然而, cut 不能轻易处理诸如
"this, is the first entry", this is the second, 34.5
Run Code Online (Sandbox Code Playgroud)
在这里,第一个逗号是第一个字段的一部分,但cut -d, -f1不同意。在我自己编写解决方案之前,我想知道是否有人知道已经存在用于这项工作的好工具。它至少必须能够处理上面的示例并从 CSV 格式的文件中返回一列。其他理想的功能包括能够根据第一行中给出的列名选择列、支持其他引用样式和支持制表符分隔的文件。
如果您不知道这样的工具,但对在 Bash、Perl 或 Python 或其他常见脚本语言中实现这样的程序有建议,我不会介意这样的建议。
有时,我得到一个输入制表符分隔的列表,例如,它不太对齐
var1 var2 var3
var_with_long_name_which_ruins_alignment var2 var3
Run Code Online (Sandbox Code Playgroud)
有没有一种简单的方法可以使它们对齐?
var1 var2 var3
var_with_long_name_which_ruins_alignment var2 var3
Run Code Online (Sandbox Code Playgroud) 有一个像这样的 CSV 文件:
HEADER
"first, column"|"second "some random quotes" column"|"third ol' column"
FOOTER
Run Code Online (Sandbox Code Playgroud)
并寻找类似的结果:
HEADER
first, column|second "some random quotes" column|third ol' column
Run Code Online (Sandbox Code Playgroud)
换句话说,删除“FOOTER”、开头、结尾和周围的引号 |。
到目前为止,这段代码有效:
sed '/FOOTER/d' csv > csv1 | #remove FOOTER
sed 's/^\"//' csv1 > csv2 | #remove quote at the beginning
sed 's/\"$//' csv2 > csv3 | #remove quote at the end
sed 's/\"|\"/|/g' csv3 > csv4 #remove quotes around pipe
Run Code Online (Sandbox Code Playgroud)
如您所见,问题在于它创建了 4 个额外的文件。
这是另一个解决方案,其目标是不创建额外的文件并在单个脚本中执行相同的操作。它不能很好地工作。
#!/bin/ksh
sed '/begin/, /end/ {
/FOOTER/d
s/^\"//
s/\"$//
s/\"|\"/|/g
}' csv …Run Code Online (Sandbox Code Playgroud) 我意识到这不是一个完全与 unix/linux 相关的问题。但由于这是我将在 linux 上做的事情,我希望有人有答案。
我有一个在线 excel 文件 ( .xlsx),它会定期更新(由其他人)。我想编写一个脚本并将其作为 cronjob 放入以处理该 excel 表。但要做到这一点,我需要将其转换为一个文本文件(所以 a .csv),其中包含分号分隔的列。不幸的是,它不能用逗号分隔,因为某些列中有逗号。是否有可能从 shell 进行这种转换?我安装了 Open office,我可以使用它的 GUI 来做到这一点,但想知道是否可以从命令行做到这一点。谢谢!
PS:我也有一台 Mac 机器,所以如果一些解决方案可以在那里工作,那也很好。:)
我有许多大型 CSV 文件,并希望它们采用 TSV(制表符分隔格式)。复杂的是CSV文件的字段中有逗号,例如:
A,,C,"D,E,F","G",I,"K,L,M",Z
Run Code Online (Sandbox Code Playgroud)
预期输出:
A C D,E,F G I K,L,M Z
Run Code Online (Sandbox Code Playgroud)
(中间的空格是“硬”标签)
我在这台服务器上安装了 Perl、Python 和 coreutils。
如何使用sed或对 CSV 文件执行以下操作awk?
我有一个超过 200 行的大桌子,我对sed.
给定一个像这样的文件
First,Last,Age
Cory,Klein,27
John Jacob,Smith,30
Run Code Online (Sandbox Code Playgroud)
是否有命令行实用程序来转置内容,以便输出看起来像这样
First,Cory,John Jacob
Last,Klein,Smith
Age,27,30
Run Code Online (Sandbox Code Playgroud) 我有一个用逗号 ( ,)分隔的输入文件。有一些用双引号括起来的字段中包含逗号。这是示例行
123,"ABC, DEV 23",345,534.202,NAME
Run Code Online (Sandbox Code Playgroud)
我需要删除双引号和双引号内出现的所有逗号。所以上面的行应该被解析为如下所示
123,ABC DEV 23,345,534.202,NAME
Run Code Online (Sandbox Code Playgroud)
我尝试了以下使用sed但没有给出预期的结果。
sed -e 's/\(".*\),\(".*\)/\1 \2/g'
Run Code Online (Sandbox Code Playgroud)
任何快速的运用了sed,awk或者任何其他Unix工具吗?
这样的事情存在吗?在 CLI 环境中显示良好的基于文本的电子表格。我知道我可以随心所欲地cat foobar.csv做,但这并不是特别实用或有吸引力。我无法想象格式化表格会很困难,并且可能也遵循某些规则(数学?)。
Emacs 可以org-mode很好地处理基于文本的表格,并允许导出为多种格式。但是,必须使用 Emacs!作为 Vim 用户,我更愿意避免这种情况。
csv ×10
command-line ×3
sed ×3
awk ×2
python ×2
bash ×1
conversion ×1
jq ×1
json ×1
libreoffice ×1
openoffice ×1
perl ×1
software-rec ×1
spreadsheet ×1
tabulation ×1