小编Chr*_*our的帖子

如何在.txt文件中保存列表的每个元素,每行一个?

我有一个清单,pList.我想将其保存到text(.txt)文件中,以便列表中的每个元素都保存在文件的新行中.我怎样才能做到这一点?

这就是我所拥有的:

def save():
    import pickle
    pList = pickle.load(open('primes.pkl', 'rb'))
    with open('primes.txt', 'wt') as output:
      output.write(str(pList))
    print "File saved."
Run Code Online (Sandbox Code Playgroud)

但是,列表只保存在文件的一行中.我想要它所以每个数字(它只包含整数)都保存在一个新行上.

例:

pList=[5, 9, 2, -1, 0]
#Code to save it to file, each object on a new line
Run Code Online (Sandbox Code Playgroud)

期望的输出:

5
9
2
-1
0
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢?

python io text list

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

有条件的 awk hashmap 匹配查找

我有 2 个表格文件。一个文件包含仅称为lookup_file.txt的 50 个键值的映射 另一个文件具有 30 列和数百万行的实际表格数据。data.txt 我想用lookup_file.txt 中的值替换第二个文件的id 列.

我怎样才能做到这一点?我更喜欢在 bash 脚本中使用 awk .. 另外,我可以在 bash 中使用哈希图数据结构来存储 50 个键/值而不是另一个文件吗?

unix linux bash perl awk

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

使用awk修改文本

我正在尝试使用awk修改文本文件.有三列,我想删除第一列中的部分文本:

range=chr1      20802865        20802871        
range=chr1      23866528        23866534
Run Code Online (Sandbox Code Playgroud)

chr1      20802865        20802871        
chr1      23866528        23866534
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

我试过awk '{ substr("range=chr*", 7) }'awk '{sub(/[^[:space:]]*\\/, "")}1',但删除了文件中的所有内容.

linux awk text replace sed

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

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
查看次数

如何使用AWK或Sed在x个单词之后插入换行符\n

我在一行中有这个:

We were born in the earth beyond the land
Run Code Online (Sandbox Code Playgroud)

我希望它在3个单词行中,如下所示:

We were born
in the earth 
beyond the land
Run Code Online (Sandbox Code Playgroud)

unix linux bash shell awk

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

使用awk/sed从一行中提取数字

我有这个字符串:

Stream #0:0: Video: vp6f, yuv420p, 852x478, 1638 kb/s, 25 tbr, 1k tbn, 1k tbc
Run Code Online (Sandbox Code Playgroud)

我想从中提取25出来.我用:

sed -r 's/.+([0-9]{2} tbr).+/\1/'
Run Code Online (Sandbox Code Playgroud)

它返回我需要的东西.

无论如何,如果相反我会遇到一个字符串

Stream #0:0(eng): Video: mpeg4 (Simple Profile) (mp4v / 0x7634706D), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 11981 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 30k tbc
Run Code Online (Sandbox Code Playgroud)

它不会再回归我需要的了.

我尝试了不同的替代方法,因此tbr在两种情况下都返回值,但找不到正确的表达式.

regex linux awk sed

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

在emacs中关闭emacs

偶尔在term模式下使用emacs时,我会错误地运行emacs file而不是仅仅打开文件.这将在当前客户端内创建嵌套的emacs客户端.我的问题是如何关闭内部客户端?

emacs

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

聚合框架中的项目布尔值

是否可以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
查看次数

标签 统计

bash ×5

linux ×5

awk ×4

sed ×3

text ×2

unix ×2

while-loop ×2

aggregation-framework ×1

cat ×1

emacs ×1

io ×1

list ×1

mongodb ×1

move ×1

nosql ×1

perl ×1

python ×1

regex ×1

replace ×1

shell ×1