相关疑难解决方法(0)

使用Unix工具解析JSON

我正在尝试解析从curl请求返回的JSON,如下所示:

curl 'http://twitter.com/users/username.json' |
    sed -e 's/[{}]/''/g' | 
    awk -v k="text" '{n=split($0,a,","); for (i=1; i<=n; i++) print a[i]}'
Run Code Online (Sandbox Code Playgroud)

以上将JSON拆分为字段,例如:

% ...
"geo_enabled":false
"friends_count":245
"profile_text_color":"000000"
"status":"in_reply_to_screen_name":null
"source":"web"
"truncated":false
"text":"My status"
"favorited":false
% ...
Run Code Online (Sandbox Code Playgroud)

如何打印特定字段(用-v k=text?表示)?

bash parsing json

794
推荐指数
25
解决办法
87万
查看次数

在Bash中提取子字符串

给定表单中的文件名someletters_12345_moreleters.ext,我想提取5位数并将它们放入变量中.

因此,为了强调这一点,我有一个带有x个字符的文件名,然后是一个五位数序列,两边都是一个下划线,然后是另一组x个字符.我想取5位数字并将其放入变量中.

我对可以实现的不同方式的数量非常感兴趣.

string bash shell substring

684
推荐指数
17
解决办法
114万
查看次数

何时在shell变量周围包装引号?

有人能告诉我是否应该在shell脚本中包含变量的引号?

例如,以下是正确的:

xdg-open $URL 
[ $? -eq 2 ]
Run Code Online (Sandbox Code Playgroud)

要么

xdg-open "$URL"
[ "$?" -eq "2" ]
Run Code Online (Sandbox Code Playgroud)

如果是这样,为什么?

unix linux bash shell quotes

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

如何删除jq输出中的双引号以解析bash中的json文件?

我使用JQ解析一个JSON文件,如这里.但是,字符串值的结果包含预期的"双引号",如下所示:

$ cat json.txt | jq '.name'
"Google"
Run Code Online (Sandbox Code Playgroud)

如何将此管道传输到另一个命令以删除""?所以我明白了

$ cat json.txt | jq '.name' | some_other_command
Google
Run Code Online (Sandbox Code Playgroud)

some_other_command可以用什么?

bash awk sed jq

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

如何在Bash中用引号字符串保留换行符?

我正在创建一个脚本来自动创建apache虚拟主机.我的部分脚本是这样的:

MYSTRING="<VirtualHost *:80>

ServerName $NEWVHOST
DocumentRoot /var/www/hosts/$NEWVHOST

...

"
echo $MYSTRING
Run Code Online (Sandbox Code Playgroud)

但是,脚本中的换行符将被忽略.如果我回显字符串,就会吐出一行.

如何确保打印换行符?

bash

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

将grep结果赋给shell变量后丢失换行符

#!/usr/local/bin/bash
out=`grep apache README`
echo $out;
Run Code Online (Sandbox Code Playgroud)

通常,grep会在命令行上运行时在单独的行上显示每个匹配项.但是,在上面的脚本中,分隔每个匹配的换行符消失了.有谁知道如何保留换行符?

shell

70
推荐指数
3
解决办法
3万
查看次数

如何使用for-each循环迭代bash中的文件路径?

以下命令尝试枚举*.txt当前目录中的所有文件并逐个处理它们:

for line in "find . -iname '*.txt'"; do 
     echo $line
     ls -l $line; 
done
Run Code Online (Sandbox Code Playgroud)

为什么我会收到以下错误?:

ls: invalid option -- 'e'
Try `ls --help' for more information.
Run Code Online (Sandbox Code Playgroud)

linux bash shell

51
推荐指数
3
解决办法
11万
查看次数

Bash,参数列表段

如果你有一个python列表,你想要从2到n的元素可以做一些很好的事情

list[2:]
Run Code Online (Sandbox Code Playgroud)

我想在Bash中使用与argv类似的东西.我想将$ 2中的所有元素传递给argc到命令.我现在有

command $2 $3 $4 $5 $6 $7 $8 $9
Run Code Online (Sandbox Code Playgroud)

但这不是优雅的.会是"适当"的方式吗?

arrays bash

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

如何使用BASH从文件名中删除特定字符

我有很多文件在他们的名字中有一个共享模式,我想删除.例如,我有文件"a_file000.tga"和"another_file000.tga".我想对那些会从名称中删除模式"000"的文件执行操作,从而产生新名称"a_file.tga"和"another_file.tga".

bash

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

如何使用 jq 迭代 JSON 数组?

我正在构建一个脚本来一次下载所有 CodeCommit 存储库。

REPOS=$(aws codecommit list-repositories)

echo $REPOS | jq -r '.[]' | while read name ; do
    git clone XXX
done
Run Code Online (Sandbox Code Playgroud)

在第一行中,我得到所有存储库 JSON,如下所示:

[
  {
    "repositoryName": "repo_a",
    "repositoryId": "XXXXXX"
  },
  {
    "repositoryName": "repo_b",
    "repositoryId": "XXXXXX"
  },
  {
    "repositoryName": "repo_c",
    "repositoryId": "XXXXXX"
  },
  {
    "repositoryName": "repo_d",
    "repositoryId": "XXXXXX"
  }
]

Run Code Online (Sandbox Code Playgroud)

我需要简单地迭代此 json,以获取属性repositoryName 并为每个存储库执行 git clone。

但在这个例子中,该命令jq -r '.[]'不起作用......这会在每次重复时返回整个 json。

bash json jq

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

标签 统计

bash ×9

shell ×4

jq ×2

json ×2

linux ×2

arrays ×1

awk ×1

parsing ×1

quotes ×1

sed ×1

string ×1

substring ×1

unix ×1