小编tin*_*lyx的帖子

在jq中将字符串字段拆分为数组?

我有一个从 curl 返回的 JSON 数组,如下所示:

[
 {
   "title": "Some Title",
   "tags":"tagA tag-B tagC"
 },
 {
   "title": "Some Title 2",
   "tags":"tagA tagC"
 },
 ...
]
Run Code Online (Sandbox Code Playgroud)

我想把它转换成...

[
 {
   "title": "Some Title",
   "tags":["tagA",
           "tag-B",
           "tagC"]
 },
 {
   "title": "Some Title 2",
   "tags":["tagA", 
           "tagC"]
 },
 ...
]
Run Code Online (Sandbox Code Playgroud)

到目前为止,我有:

(map(select(.tags!=null)) | map(.tags | split(" "))) as $tags | $tags

这似乎给了我类似的东西:

     [
      [
       "tagA",
       "tag-B",
       "tagC"
      ],
      [
       "tagA", 
       "tagC"
      ]
     ]
Run Code Online (Sandbox Code Playgroud)

但是我似乎无法将其编织回输出中,该输出将.tags作为原始对象中的数组提供给我,并具有原始值...

json jq

6
推荐指数
1
解决办法
2万
查看次数

如何监控本地主机和 IP 地址之间的 tcp 流量

我想知道如何监控我localhost 和 IP 地址之间的 tcp 流量,并将活动保存在文件中。我尝试了 iftop 和 tcptrack,但我无法将活动保存在文件中。这些工具不针对指定的 IP 地址,它们仅监视接口:

iftop -i eth2 -f "dst port 22"
Run Code Online (Sandbox Code Playgroud)

我试图用 IP 地址代替,dst但它不起作用。这个想法是为了检测任何可疑的流量

感谢帮助

networking monitoring bandwidth network-interface

4
推荐指数
1
解决办法
1万
查看次数

如何在linux下以php/preg方式使用命令行提取一些捕获组?

鉴于在 Linux 环境中存在许多用于操作字符串的包(grep、awk、sed 等),我想要一个软件来提取类似 php/preg 的语法中的捕获组。

也许最接近的是,grep -P但我不明白它是如何工作的。

诸如此类的东西cat file.txt | grep -P '/something="([\w]+)"/i'似乎不仅仅给我捕获组内的内容。

有人可以为我提供一些工作示例吗?请多多,并解释了一些变体和限制!

编辑:我看到某处用于sed执行此目的,但我仍然对它的语法有些困惑。

linux grep debian php regular-expression

3
推荐指数
1
解决办法
4995
查看次数

使用jq将json转换为csv时处理null(空数组)?

尝试将 json 转换为 csv 时,我通过以下jq查询收到有关 null 的错误:

printf "[]" | jq -r '(map(keys) | add | unique) as $cols | map(. as $row | $cols | map($row[.])) as $rows | $cols, $rows[] | @csv'
Run Code Online (Sandbox Code Playgroud)

它给出了以下错误,

jq: error (at <stdin>:0): Cannot iterate over null (null)
Run Code Online (Sandbox Code Playgroud)

但如果 json 数组非空并且其中有一个对象,则工作正常:

$ printf '[{"a":1}]' | jq -r '(map(keys) | add | unique) as $cols | map(. as $row | $cols | map($row[.])) as $rows | $cols, $rows[] | @csv'
"a"
1
Run Code Online (Sandbox Code Playgroud)

该 …

ubuntu csv json jq

3
推荐指数
1
解决办法
3845
查看次数

在终端中显示转义序列?

有没有办法让终端显示原始转义序列?(例如用于控制颜色的那些)

我遇到了这个 UNIX.SE 问题,想过滤“红色”输出(按颜色过滤命令的输出

但是,答案中的命令不适用于我的输出(例如git status“未跟踪的文件”中的红色)。他们确实为那里的例子工作echo -e '\033[00;31mtest\033[00m' | grep --color=none '[[:cntrl:]]'。过滤grep --color=none '[[:cntrl:]]'适用于我的输出,但也显示具有其他颜色的文本。

我想我看到的红色一定是与 不同的红色\e[31m

有没有办法让终端输出原始转义序列?(这样我就可以使用正确的顺序来过滤我看到的特定红色)

(bash,Ubuntu 18.04)

- 更新 -

为了澄清起见,我的问题是如何显示原始转义序列。

@egmont' 使用script有效的答案。基本上,我只需要用来script记录输出并使用上述问题的答案之一来查找红色文本,例如:

script /tmp/a.txt
git status
exit
cat /tmp/a.txt | grep -Eo $'\e\\[31m[^\e]*\e\\[[03]?m'
Run Code Online (Sandbox Code Playgroud)

其他答案/评论也正确指出我的用法git没有通过管道获得颜色。

terminal

2
推荐指数
2
解决办法
1112
查看次数

更改用户名后,主文件夹在 bash 提示符中不显示为波形符 (~)

user我按照AskUbuntu 答案中的具体步骤将我的用户名 (Ubuntu 22.04.1) 从某个名称更改为。一切似乎都很好,就像用户名是从头开始创建的一样,只是 bash 的用户提示不使用波形符 ( ~)。

当我最初启动终端(在 GUI 中或没有 X 服务器)时,bash 提示符~与以前一样使用。但是一旦我进入cd某个目录,它就会更改为原始值,如下所示:

user@mybox:~$ cd 
user@mybox:/home/user$
Run Code Online (Sandbox Code Playgroud)

如何修复像以前一样使用波形符的提示?

仅供参考,~仍然正确引用更改后的主文件夹。我没有更改任何地方.bashrc或其他地方的提示。以下是系统的相关信息:

$ getent passwd "$LOGNAME"
user:x:1000:1000:User:/home/user/:/bin/bash

$ echo "${HOME}"
/home/user/

$ echo "$PS1" 
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$
Run Code Online (Sandbox Code Playgroud)

bash

1
推荐指数
1
解决办法
608
查看次数