AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题

问题[csv](unix)

Martin Hope
Duck
Asked: 2023-10-04 19:09:18 +0800 CST

如何在 macOS 的 BSD 终端上将带有段落的 CSV 转换为 JSON?

  • 4

我有一个巨大的文本文件,其中包含以下结构:

title;description;date

问题是descriptionmain 包含段落,例如:

title;description;data
MyText;Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam est dolor, molestie a rhoncus vel, congue sed diam. Vestibulum pellentesque libero eleifend dolor finibus vestibulum. Curabitur at suscipit tellus, at viverra ex. Nulla sem nibh, laoreet a porta a, convallis ac augue. Aliquam diam sapien, rutrum sed nulla lobortis, hendrerit rutrum diam. Donec tellus quam, maximus at mollis sit amet, consequat eget orci. Duis id vestibulum metus. Nulla convallis tortor diam, a tempus quam mollis sed. Aliquam at fermentum nibh, quis sodales orci. Maecenas viverra ultrices lobortis. Morbi viverra, tortor in mattis tincidunt, augue erat condimentum leo, a dignissim nulla lacus ac augue. Sed tincidunt rutrum sapien, sodales commodo sapien. Sed ultrices, augue vitae porta viverra, eros magna pellentesque leo, in bibendum enim enim non nulla. Nullam vel venenatis leo.

Sed sed vulputate nulla. Nullam hendrerit justo quis ante aliquet ullamcorper. Praesent at rhoncus ipsum, in sodales felis. Nam eu ante accumsan urna tempus rutrum at in felis. Maecenas eleifend enim nec augue eleifend, ut sagittis leo tincidunt. In non felis pretium, accumsan mi sit amet, hendrerit lectus. Nullam auctor mi non ligula aliquam commodo. Nunc mollis consequat purus, sit amet rutrum elit sodales sit amet. Suspendisse potenti. Ut a tempor urna. Etiam vitae venenatis ex.

Nunc ut mattis nibh. Morbi varius accumsan purus, vel facilisis eros suscipit id. Sed non accumsan arcu, pretium pulvinar urna. Quisque a neque faucibus, condimentum velit eget, varius lorem. Duis varius iaculis ullamcorper. Maecenas vitae fringilla mi, ultrices finibus justo. Suspendisse vel nibh tortor. Nullam ullamcorper justo augue, molestie lacinia lorem varius et. Etiam sed pulvinar metus, ac euismod arcu. Morbi laoreet dolor volutpat, tempor nunc sit amet, lobortis ipsum. Quisque posuere commodo sollicitudin. Vivamus consectetur ligula sed ante tristique congue. Duis faucibus lacus tellus, sed consectetur purus ornare vitae.;2023-07-12

如何使用 macOS 终端将其转换为 JSON?

注意:由于敏感数据,我不想使用在线转换器。

我尝试过类似的东西

ruby -r json -r csv -e 'puts CSV.parse(STDIN, headers:true).map(&:to_h).to_json' < myFile.csv > myFile.json

但这些都失败了。我怀疑是因为他们将段落中的换行符解释为 CSV 行的结尾和下一行的开头。

当我执行 a 时,cat -e myFile.csv我看到$为行和段落内的分隔符的标记。一样的标记!

当我file在CSV我看到

Unicode text, UTF-8 text, with very long lines, with CRLF line terminators

我不知道该怎么做。

谢谢

csv
  • 1 个回答
  • 43 Views
Martin Hope
Daniel Krajnik
Asked: 2023-08-26 01:23:40 +0800 CST

将 json 转换为 csv,并在 jq 中标头

  • 7

是否可以转换这个json:

[
    {
        "bytes": 276697,
        "checked": false
    },
    {
        "bytes": 276697,
        "checked": false
    }
]

到 jq 中带有标题的表?

我试过了:

cat file.json | jq '.[] | join(",")'

但它省略了标题:

"276697,false"
"276697,false"

它应该是:

"bytes,checked"
"276697,false"
"276697,false"

我希望您只需运行两个命令:

cat file.json | jq '.[] | keys, .[] | join(",")'

但第二个失败了:

"bytes,checked"
jq: error (at <stdin>:64): Cannot iterate over null (null)

理想情况下它会比这更简单。

csv
  • 2 个回答
  • 71 Views
Martin Hope
s.k
Asked: 2023-03-11 01:43:20 +0800 CST

视觉对齐 CSV 文件的列

  • 8

使用sedor awk,是否可以在视觉上对齐 CSV 文件中的列?

例如:

例如来自:

a,b,c,some stuff,"some, other, stuff",d,2023-03-10 18:37:00
y,x,z,t,cool,thing,2022-04-12 21:44:00

到:

a, b, c, some stuff,"some, other, stuff",     d, 2023-03-10 18:37:00<EOL>
x, y, z,          t,                cool, thing, 2022-04-12 21:44:00<EOL>

有一些双引号字段包含文本和逗号。

我尝试column了bsdmainutils一下,但显然无法处理此类数据。

csv
  • 3 个回答
  • 285 Views
Martin Hope
R 9000
Asked: 2023-02-24 08:21:53 +0800 CST

将 csv 中的许多值舍入为 3 位小数(printf?)

  • 10

我有这样的粘贴命令 paste -d , file1.csv file2.csv file3.csv

file2.csv 包含这样的数字

0.2
0.3339
0.111111

我希望 file2.csv 中的值具有 3 位小数,如下所示:

0.200
0.334
0.111

对于一个值,这是有效的:

printf "%.3f" "0.3339"->0.334

但是对于 file2.csv 中的多个值,这是行不通的:

paste -d , file1.csv <(printf %s "%.3f" "$(< file2.csv)") file3.csv

也许有一个好的解决方案?

csv
  • 3 个回答
  • 406 Views
Martin Hope
dante_t
Asked: 2022-11-23 02:49:29 +0800 CST

插入时间戳并替换 CSV 文件中的空字段

  • 6

我有包含以下元素的 CSV 文件:

timestamp,      data1,  data2,  data3,  data4,  data5
2015-03-16 00:00:00,    3,  3,  4,  2,  5
2015-03-16 00:10:00,    4,  7,  8,  9,  3
2015-03-16 00:20:00,    1,  23, ,   5,  4
2015-03-16 00:30:00,    3,  2,  46, 7,  6
2015-03-16 00:40:00,    4,  5,  6,  8,  4
2015-03-16 00:50:00,    2,  ,   4,  ,   2
2015-03-16 01:00:00,    22, 1,  3,  4,  3
2015-03-16 01:50:00,    3,  ,   7,  8,  89
2015-03-16 02:00:00,    44, 5,  6,  7,  
2015-03-16 02:10:00,    3,  2,  1,  2,  2
2015-03-16 02:20:00,    4,  ,   ,   3,  3
2015-03-16 03:30:00,    5,  6,  7,  4,  3

我想添加缺少的时间戳并NaN在数据不存在的地方填充数据字段,如下所示:

timestamp,      data1,  data2,  data3,  data4,  data5
2015-03-16 00:00:00,    3,  3,  4,  2,  5
2015-03-16 00:10:00,    4,  7,  8,  9,  3
2015-03-16 00:20:00,    1,  23, NaN,    5,  4
2015-03-16 00:30:00,    3,  2,  46, 7,  6
2015-03-16 00:40:00,    4,  5,  6,  8,  4
2015-03-16 00:50:00,    2,  NaN,    4,  NaN,    2
2015-03-16 01:00:00,    22, 1,  3,  4,  3
2015-03-16 01:10:00,    NaN,    NaN,    NaN,    NaN,    NaN
2015-03-16 01:20:00,    NaN,    NaN,    NaN,    NaN,    NaN
2015-03-16 01:30:00,    NaN,    NaN,    NaN,    NaN,    NaN
2015-03-16 01:40:00,    NaN,    NaN,    NaN,    NaN,    NaN
2015-03-16 01:50:00,    3,  NaN,    7,  8,  89
2015-03-16 02:00:00,    44, 5,  6,  7,  NaN
2015-03-16 02:10:00,    3,  2,  1,  2,  2
2015-03-16 02:20:00,    4,  NaN,    NaN,    3,  3
2015-03-16 02:30:00,    NaN,    NaN,    NaN,    NaN,    NaN
2015-03-16 02:40:00,    NaN,    NaN,    NaN,    NaN,    NaN
2015-03-16 02:50:00,    NaN,    NaN,    NaN,    NaN,    NaN
2015-03-16 03:00:00,    NaN,    NaN,    NaN,    NaN,    NaN
2015-03-16 03:10:00,    NaN,    NaN,    NaN,    NaN,    NaN
2015-03-16 03:20:00,    NaN,    NaN,    NaN,    NaN,    NaN
2015-03-16 03:30:00,    5,  6,  7,  4,  3

我怎样才能做到这一点?请注意,这会持续几天,而不是一天。为简单起见,我使用了一天的数据。我正在使用 Cygwin,谢谢。

csv
  • 1 个回答
  • 33 Views
Martin Hope
John
Asked: 2022-10-05 00:33:35 +0800 CST

逗号分隔的文件在值中包含逗号

  • 0

我有一个包含以下数据的文件:

“A”,”Dept1”,”i am mahesh,working in it”,”1”
“B”,”Dept2”,”i am suresh, working in non it”,”2”

我想要的输出是:

A,Dept1,i am mahesh~working in it,1
B,Dept2,i am suresh~working in non it,2

我在下面尝试过,但它正在用 ~ 替换 all ,如下所示:

awk -F ‘“,”’ -v OFS=‘’ ‘{for (i=0;i<=NF;++i) gsub(“,”,”~”,$i)}1’ file

“A”~”Dept1”~”i am mahesh~working in it”~”1”
“B”~”Dept2”~”i am suresh~working in non it”~”2”
awk csv
  • 2 个回答
  • 50 Views
Martin Hope
Vidanez
Asked: 2022-09-15 04:12:44 +0800 CST

AWK 从带有跳转行的 CSV 文件中的项目启动操作系统命令

  • 3

我有一个 CSV 文件,如下所示:

keyuat,carsim,logs-keyuat-carsim
lowuat,carsimserver,logs-lowuat-carsimserver
utils,dash,logs-utils-dash
utils,lifecycle,logs-utils-lifecycle
utils,lifecycle-nodejs,logs-utils-lifecycle-nodejs
workshop,cashier,logs-workshop-cashier
workshop,jfrog-dotnet,logs-workshop-jfrog-dotnet
workshop,labelsengine,logs-workshop-labelsengine

基于此 CSV 文件,我正在尝试运行两个必须一起执行的命令:

oc project $1 
oc patch dc $2 -p '{"metadata":{"labels":{"logentries":"$3"}}}'

使用上面的真实示例,命令将是:

oc project keyuat 
oc patch dc carsim -p '{"metadata":{"labels":{"logentries":"logs-keyuat-carsim"}}}'

我一直在尝试使用 awk,但我总是发现特殊字符或 /r 无效字符的问题,我没有看到。如果不是system我使用print,我会看到我的一些字符在行首重叠而不是在最后添加:

 awk -F , '{ cmd="oc project " $1 "\;" "\n" "oc patch dc " $2 " \-p '\''\{\"metadata\"\:\{\"labels\"\:\{\"logentries\"\:\"" $3"\""; print(cmd) }' ./csv/labels.csv
 
"}}}oject keyuat; oc patch dc carsim -p '{"metadata":{"labels":{"logentries":"logs-keyuat-carsim
"}}}oject lowuat; oc patch dc carsimserver -p '{"metadata":{"labels":{"logentries":"logs-keyuat-carsimserver
 "}}}oject utils; oc patch dc dash -p '{"metadata":{"labels":{"logentries":"logs-utils-dash


awk -F , '{ cmd="oc project " $1 "\;" "oc patch dc " $2 " -p '\''\{\"metadata\"\:\{\"labels\"\:\{\"logentries\"\:\"" $3 "\"\}\}\}'\''"; system(cmd) }' ./csv/labels.csv
awk: cmd. line:1: warning: escape sequence `\;' treated as plain `;'
awk: cmd. line:1: warning: escape sequence `\{' treated as plain `{'
awk: cmd. line:1: warning: escape sequence `\:' treated as plain `:'
awk: cmd. line:1: warning: escape sequence `\}' treated as plain `}'
Already on project "keyuat" on server "https://test-ocp.exampleusage.eu:443".
Error from server (BadRequest): invalid character '\r' in string literal
Already on project "lowuat" on server "https://test-ocp.exampleusage.eu:443".
Error from server (BadRequest): invalid character '\r' in string literal
Now using project "utils" on server "https://test-ocp.exampleusage.eu:443".
Error from server (BadRequest): invalid character '\r' in string literal

如何更正此脚本?

awk csv
  • 3 个回答
  • 183 Views
Martin Hope
Scouse_Bob
Asked: 2022-09-12 21:13:24 +0800 CST

扫描文本文件中的重复 ID 号并保留日期值最高的行,删除其他行

  • 0

我正在使用包含 7 列的多行文本文件 (.csv)。

每行包含“应该”是一个唯一的 id 还有一些日期列,其中一个是“最后修改”日期。

我发现应该是“唯一”的 id 实际上有时会重复,这是我需要通过删除除一个之外的所有来解决的问题。

我在下面有一个使用 gawk 的示例,但是有没有办法使用 gawk、awk 或 grep 等来删除任何重复的行,但“最近”修改的行除外?所以,有一些关于什么去和去的逻辑。

例如,这个 csv 提取有两行。除了一个之外,每个字段都是相同的。身份证号码“相同”意味着它是我的目的的“重复”。

但这两条线并不完全相同。

csv 文件最后(第 7 个)字段中的日期使一个条目比另一个条目更旧。

ID12345,Here is some text,ABCDEFG,7,9,2022-08-18 20:15:00,2022-08-26 17:32:00
ID12345,Here is some text,ABCDEFG,7,9,2022-08-18 20:15:00,2022-09-11 22:15:00

是否可以对文件进行 gawk、cat、grep、cut、awk 等操作,并且:

a) 识别具有重复 ID 的任何事物。b) 仅保留最后一个字段中具有“最新”日期的重复项。

理想情况下,我需要保留第一行,因为它具有正在输入数据库的 csv 的标题。

这就是为什么这几乎可以正常工作的原因:

gawk -i inplace '!a[$0]++' *.csv

它实际上似乎删除了保留一行的重复项,但是它没有逻辑来根据最终字段中最旧的日期值来决定要保留什么。

你能帮忙吗...

text-processing csv
  • 3 个回答
  • 58 Views
Martin Hope
rt1111
Asked: 2022-02-04 04:25:41 +0800 CST

使用 jq 重新格式化 json

  • 1

我有以下 JSON 文件:

{ data : [
  {
   "name" : "name1"
   "date" : [
     {
      "date1" : "aaa",
      "date2" : "bbb"
     },
     {
      "date1" : "ccc",
      "date2" : "ddd"
     },
     {
      "date1" : "eee",
      "date2" : "fff"
     },
     "var" : "ggg"
 },
{
   "name" : "name2"
   "date" : [
     {
      "date1" : "hhh",
      "date2" : "iii"
     },
     {
      "date1" : "jjj",
      "date2" : "kkk"
     },
     "var" : "lll"
  }
 ]
}

我想要这种格式的 CSV 文件:

name, date, var
name1, aaa ccc eee, ggg
name2, hhh jjj, lll

仅使用jq可以做到这一点吗?

bash csv
  • 1 个回答
  • 272 Views
Martin Hope
Scouse_s
Asked: 2021-12-24 10:05:53 +0800 CST

如何在 CSV 文件中追加新行并在 Unix 中修改它们

  • 1

我一般是 Unix 新手,开始学习 shell 脚本。我正在使用具有以下示例行的 CSV 文件(这是一个大型 CSV 文件,每个项目有 4 个条目):

Table 1
Item ID   Time                  Available   Location 
0001      02/02/2021  08:00     Y           NJ
0001      02/02/2021  09:00     N           UT
0001      02/02/2021  10:00     Y           AZ
0001      02/02/2021  11:00     Y           CA
0002      02/02/2021  08:00     Y           NJ
0002      02/02/2021  09:00     N           UT
0002      02/02/2021  10:00     Y           AZ
0002      02/02/2021  11:00     Y           CA      

我有另一个带有一堆项目 ID 的 CSV,如下所示:

Table 2
Item ID   Item_Name   Item_Aux_ID    Item_Aux_name
1001      IT_1        3323           IT_Aux_1
1002      IT_2        3325           IT_Aux_2
1003      IT_3        3328           IT_Aux_3
1010      IT_4        3333           IT_Aux_4

我想在第一个 CSV 文件中创建新条目(第二个 CSV 文件中的每个项目一个条目)。每个新条目应与 Table1 的第一行相同,并适当替换了 Item ID。预期的输出将是:

Table 1
Item ID   Time                  Available   Location 
0001      02/02/2021  08:00     Y           NJ
0001      02/02/2021  09:00     N           UT
0001      02/02/2021  10:00     Y           AZ
0001      02/02/2021  11:00     Y           CA
0002      02/02/2021  08:00     Y           NJ
0002      02/02/2021  09:00     N           UT
0002      02/02/2021  10:00     Y           AZ
0002      02/02/2021  11:00     Y           CA  
1001      02/02/2021  08:00     Y           NJ
1002      02/02/2021  08:00     Y           NJ
1003      02/02/2021  08:00     Y           NJ
1010      02/02/2021  08:00     Y           NJ 

如何在 Unix 中编写脚本来实现上述功能?提前致谢。

shell csv
  • 2 个回答
  • 1364 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve