小编Chr*_*our的帖子

将字符串转换为以空格分隔的列表w/quoted elements

Python中是否有一种简单的方法可以使用空格作为分隔符将字符串转换为列表,但忽略引用文本中的空格?IE:每个单词都被视为一个单独的搜索词,但任何引用的文本都被视为一个词.

python

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

.*sed太贪心了

我想从bash中的某些字符串中提取版本号而不使用太多额外的包.到目前为止我试过了sed.

这是API:

3.81-8.1ubuntu1.1    should give :  3.81
2.68-1ubuntu2        should give :  2.68
1:1.11.3-1ubuntu2    should give :  1.11.3
Run Code Online (Sandbox Code Playgroud)

到目前为止,这是我的sed命令:

echo ... | sed -r 's/.*([0-9\.]+).*/\1/'
Run Code Online (Sandbox Code Playgroud)

然而,开场.*太贪心,尤其是最后一个案例.我已经尝试了一些.*?,并.\{-}没有任何成功.

我可以两次通过,但我宁愿学习如何在一个中完成.

regex grep sed

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

Unix命令在目录中的所有文件的顶部插入注释

我想为Unix中的目录中的所有文件添加注释.如果我可以使用任何命令组合,请建议解决方案.

unix linux shell file find

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

bash:逐行读取文件,然后sed追加

我有一个文本文件,可以有X个字段,每个字段用逗号分隔.在我的脚本中,我逐行阅读,检查在该行上填充了多少字段,并确定我需要在该行的末尾追加多少逗号来表示所有字段.例如,文件如下所示:

Address,nbItems,item1,item2,item3,item4,item5,item6,item7    
2325988023,7,1,2,3,4,5,6,7
2327036284,5,1,2,3,4,5
2326168436,4,1,2,3,4
Run Code Online (Sandbox Code Playgroud)

应该成为这样的:

Address,nbItems,item1,item2,item3,item4,item5,item6,item7
2325988023,7,1,2,3,4,5,6,7
2327036284,5,1,2,3,4,5,,
2326168436,4,1,2,3,4,,,
Run Code Online (Sandbox Code Playgroud)

我的下面的脚本有效,但看起来非常低效.它是逐行阅读在大文件上有困难吗?导致经济放缓的是它吗?更好的方法吗?

#!/bin/bash

lineNum=0
numFields=`head -1 File.txt | egrep -o "," | wc -l`

cat File.txt | while read LINE
do
        lineNum=`expr 1 + $lineNum`
        num=`echo $LINE | egrep -o "," | wc -l`
        needed=$(( numFields - num ))
        for (( i=0 ; i < $needed ; i++ ))
        do
                sed -i "${lineNum}s/$/,/" File.txt
        done
done
Run Code Online (Sandbox Code Playgroud)

bash sed while-loop

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

如何使用bash编写命令行工具

我想编写一个命令行工具,如git,它将遵循POSIX标准。这将需要的选项,如--help-h--version...等。但是我不知道该怎么做。谁能告诉我如何使用bash脚本执行此操作。请帮我。这对我来说是很新的东西。

例子:如果我的工具名称是Check-code,那么我想使用;

Check-code --help 
Run Code Online (Sandbox Code Playgroud)

要么

Check-code --version
Run Code Online (Sandbox Code Playgroud)

bash

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

如何移动和编号文件?

我使用linux,bash.

我有一个目录,里面有100个文件夹,每个目录名称不同.

在这100个文件夹中的每个文件夹中都有一个名为first.bars的文件(所以我有100个名为first.bars的文件).虽然所有名为first.bars,但文件实际上略有不同.

我想将所有这些文件移动到一个新文件夹并重命名/编号这些文件,以便我知道哪个文件来自哪个文件夹.所以第一个first.bars文件必须重命名为001.bars,第二个文件必须重命名为002.bars ..等等.

我尝试过以下方法:

ls -d * >> /home/directorywiththe100folders/list.txt
cat list.txt | while read line;
do cd $line;
mv first.bars /home/newfolder
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为我不能在一个文件夹中有100个名称相同的文件.所以我只需要知道如何重命名它们.重命名必须连接到cat list.txt,因为第一行是包含移动和重命名的第一个文件的文件夹.该文件将被称为001.bars.

linux bash move while-loop cat

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

合并第一列的结果然后将第二列汇总到第一列中每个条目的总计

我有点Bash新手,所以请在这里忍受我.

我有一个由另一个软件(我无法控制)转储的文本文件,列出每个用户访问某些资源的次数,如下所示:

Jim 109
Bob 94
John 92
Sean 91
Mark 85
Richard 84
Jim  79
Bob  70
John 67
Sean 62
Mark 59
Richard 58
Jim  57
Bob  55
John 49
Sean 48
Mark 46
.
.
.

我的目标是获得这样的输出.

Jim  [Total for Jim]
Bob  [Total for Bob]
John [Total for John]

等等.

每次在软件中运行查询时名称都会更改,因此对每个名称进行静态搜索,然后通过wc进行管道传输无效.

linux bash shell awk

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

每当遇到逗号时在文件中插入换行符 - Shell脚本

我需要编写一个shell脚本来通过插入换行符来重新格式化文件.条件是当我们在文件中遇到逗号时应插入换行符.

例如,如果文件delimiter.txt包含:

这是一个文件,当我们找到逗号时,应该添加一个换行符.

输出应该是:

this
is a file
that should
be added
with a
line break
when we find a
a comma.
Run Code Online (Sandbox Code Playgroud)

可以这样做grep还是awk

unix shell awk

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

聚合框架中的项目布尔值

是否可以project使用 MongoDB 的聚合框架进行操作的布尔值?

例如,给定一个像这样的输入文档:

{
  "id": 123,
  "data": [
    {
      "val": 1
    },
    {
      "val": 2
    },
    {
      "val": 3
    },
    {
      "val": 4
    },
    {
      "val": 5
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

$data.val > 3我想返回的操作是:

{
  "result": [
    {
      "bool_val": 0
    },
    {
      "bool_val": 0
    },
    {
      "bool_val": 0
    },
    {
      "bool_val": 1
    },
    {
      "bool_val": 1
    }
  ],
  "ok": 1
}
Run Code Online (Sandbox Code Playgroud)

这就是我想出的:

db.test.aggregate([{$match: {id: 123}}, 
                   {$unwind: "$data"}, 
                   {$project: {"bool_val": {"$data.val": {$gt: 3}}, _id: 0}} 
                  ]) 
Run Code Online (Sandbox Code Playgroud)

这会产生以下错误:

aggregate …
Run Code Online (Sandbox Code Playgroud)

mongodb nosql aggregation-framework

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

用awk返回单引号之间的字符串

我正在编写一个脚本来大规模重置wordpress用户名和密码.密码是使用旧密码存储的,现在随着MySQL和PHP的更新,旧密码不再有效,因此需要重置.

我有一个看起来像这样的文件:

define('DB_USER', 'abc_12345');
define('DB_PASSWORD', 'abc12345');
define('DB_USER', 'def_34589');
define('DB_PASSWORD', 'def34589');
Run Code Online (Sandbox Code Playgroud)

我只需要在单引号内返回值:

DB_USER abc_12345
DB_PASSWORD abc12345

DB_USER def_34589
DB_PASSWORD def34589
Run Code Online (Sandbox Code Playgroud)

现在,我已经查看了类似的问题,但它们都与我正在使用的有点不同.

我尝试过以下方法:

cat file.txt | awk '{print $1,$2}' 
Run Code Online (Sandbox Code Playgroud)

返回

define('DB_USER', 'abc_12345');
define('DB_PASSWORD', 'abc12345');
define('DB_USER', 'def_34589');
define('DB_PASSWORD', 'def34589');
Run Code Online (Sandbox Code Playgroud)

我试过了

cat file.txt | awk '{print $1}'
Run Code Online (Sandbox Code Playgroud)

返回

define('DB_USER',
define('DB_PASSWORD',
Run Code Online (Sandbox Code Playgroud)

我试过了

cat file.txt | awk '{print $2}'
Run Code Online (Sandbox Code Playgroud)

返回

'abc_12345');
'abc12345');
Run Code Online (Sandbox Code Playgroud)

我也尝试过用grep混合awk

cat file.txt | awk '{print $2}' | grep -P " '*.' "
Run Code Online (Sandbox Code Playgroud)

这不会返回任何东西.

shell awk

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

标签 统计

bash ×4

shell ×4

awk ×3

linux ×3

sed ×2

unix ×2

while-loop ×2

aggregation-framework ×1

cat ×1

file ×1

find ×1

grep ×1

mongodb ×1

move ×1

nosql ×1

python ×1

regex ×1