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
    • 最新
    • 标签
主页 / user-304576

paropunam's questions

Martin Hope
paropunam
Asked: 2023-01-17 09:29:45 +0800 CST

包含排序和 awk 的管道在从文件中获取随机行时将太多文件写入磁盘,最终由于存储不可用而失败

  • 5

我的 SSD 上有大约 500 GB 的可用磁盘空间。我正在尝试对 10 个 gzip 文件(每个文件大小约为 25GB)运行一个操作。parallel但是,当我在for 循环中执行此操作时,我一直用完存储空间,因为在同一目录中sort写入了很多内容temporary files,并且显然不会自行清理。

我试图从这些文件中随机抽取一定数量的行。

bcftools view "${FILES[i]}".vcf.gz | awk '{printf("%f\t%s\n",rand(),$0);}' | sort -t $'\t' -T . -k1,1g | head -n "${SUBSET_COUNT[i]}" | cut -f 2- >> "${FILES[i]}"_"${SUBSET_COUNT[i]}"_subset.vcf &

此操作对每个文件大约需要 1 小时(当我一个一个地执行时),但我想并行执行此操作,因为我需要对更多批次的此类文件重复此操作。

awk
  • 1 个回答
  • 43 Views
Martin Hope
paropunam
Asked: 2023-01-17 06:58:07 +0800 CST

为什么 `htop` 在 `sort` 命令中将 `$'\t'` 显示为 `?`?

  • 8

我正在运行一个管道命令,其中一个部分如下:

sort -t $'\t'  -T . -k1,1g

当我在监视时,htop我看到了这个:

在此处输入图像描述

这背后的原因是什么?这是否意味着我的命令有误或有问题htop?

sort
  • 2 个回答
  • 500 Views
Martin Hope
paropunam
Asked: 2022-05-31 01:37:20 +0800 CST

提取两个文件之间按顺序交换的行的索引

  • 3

我有两个大的制表符分隔文件(>10GB),我知道当它们被排序时,它们的内容是相同的。

但是,当它们共享相同的“键”(此处的键被定义为基于Source和Location列分组的行)时,我对行的顺序和交换的索引感兴趣。

换句话说,这两个文件之间的行应该仅在它们来自同一组时(即它们共享相同的源和位置时)相互比较。

例如,在下面的示例中,第 4、5、6 行file1.tsv应该与第 4、5、6行进行比较file2.tsv

注意:文件是普通的 TSV。此处仅添加额外的空格以使列居中和右对齐,以获得更好的可见性。这些空间不是原始文件的一部分

文件1.tsv

     Identifier  Position Source  Location
     AY1:2301        87    ch1        14
    BC1U:4010       105    ch1        14
    AC44:1230        90    ch1        15
    AJC:93410        83    ch1        16
    ABYY:0001       101    ch1        16
       ABC:01        42    ch1        16
      HH:A9CX       413    ch1        17
      LK:9310         2    ch1        17
    JFNE:3410       132    ch1        18
    MKASDL:11        14    ch1        18
   MKDFA:9401        18    ch1        18
  MKASDL1:011       184    ch2        50
   LKOC:AMC02        18    ch2        50
     POI:1100       900    ch2        53
    MCJE:09HA        11    ch2        53
   ABYCI:1123        15    ch2        53
     MNKA:410         1    ch2        53

文件2.tsv

     Identifier  Position Source  Location
     AY1:2301        87    ch1        14
    BC1U:4010       105    ch1        14
    AC44:1230        90    ch1        15
       ABC:01        42    ch1        16
    ABYY:0001       101    ch1        16
    AJC:93410        83    ch1        16
      HH:A9CX       413    ch1        17
      LK:9310         2    ch1        17
    MKASDL:11        14    ch1        18
    JFNE:3410       132    ch1        18
   MKDFA:9401        18    ch1        18
  MKASDL1:011       184    ch2        50
   LKOC:AMC02        18    ch2        50
     MNKA:410         1    ch2        53
     POI:1100       900    ch2        53
   ABYCI:1123        15    ch2        53
    MCJE:09HA        11    ch2        53

我想做类似于“差异”的事情,但在“组”级别(只有在它们共享相同Source和时才比较行Location)

当行的顺序在同一个“源/位置”“组”(或键)中“交换”时,我想提取原始的“行号” 。

整行应该在内容方面匹配。

但我不知道该怎么做。当我的原始数据集有数百万行时,我只能考虑编写一个效率极低的 for 循环。

预期结果:

Group_Source:Location  df1.index  df2.index

ch1:16                         4          6
ch1:16                         6          4
ch1:18                         9         10
ch1:18                        10          9
ch2:53                        14         15
ch2:53                        15         17
ch2:53                        17         14

假设:

  • 两个数据框的行数相同
  • 两个数据帧是相同的(仅交换行的顺序,因此如果两者都按源排序,然后按位置排序,然后按位置排序,然后按标识符排序,那么它们将完全相同)
  • “交换”的行总是在所有列的内容方面完全匹配
bash awk
  • 2 个回答
  • 289 Views
Martin Hope
paropunam
Asked: 2020-01-31 02:17:11 +0800 CST

搜索名称中包含大于某个阈值的数字的目录

  • 2

这是我拥有并希望使用附加条件进行修改的命令:

find /home/user/backups/ -mindepth 2 -maxdepth 3 -name "*~EEEE000.tif" -print

这是的输出ls /home/user/backups/:

backup20170101_somerandomstring
backup20170115_somerandomstring
backup20170230_somerandomstring
backup20170305_somerandomstring
backup20170408_somerandomstring
backup20170521_somerandomstring
.
.
.
backup20190111_somerandomstring
backup20190130_somerandomstring
backup20190209_somerandomstring
backup20190301_somerandomstring
backup20190303_somerandomstring
backup20190311_somerandomstring
backup20190313_somerandomstring
backup20190412_somerandomstring
.
.
.
backup20200102_somerandomstring
backup20200103_somerandomstring
backup20200105_somerandomstring
backup20200110_somerandomstring
.
.
.

我只想搜索 2019-03-10 之后生成的目录。所以这可以很容易地被认为是目录 ,其名称中的数字大于20190310单词后面的backup数字。

我可以瘦seq但不知道如何将它与find一起使用。我相信那里有更好的选择。

seq -f "backup%1.0f" 20190310 20200131
find ls
  • 1 个回答
  • 93 Views
Martin Hope
paropunam
Asked: 2019-04-10 04:48:59 +0800 CST

仅复制具有特定扩展名的文件,同时根据父文件夹重命名每个文件

  • 0

我有几个目录:

├── folder1.x
│   ├── dsferwe
│   ├── ewrwr342
│   ├── analysis
│   ├── fdsds
│   ├── vcxvcxz
│   ├── 324322
│   ├── export.asc
│   ├── f_random_subfolder.xf
│   │   ├── -.method
│   │   ├── desktop.ini
│   │   ├── lock.file
│   │   └── submethods.xml
│   └── Sync
├── random_folder4.x
│   ├── dsferwe
│   ├── ewrwr342
│   ├── analysis
│   ├── fdsds
│   ├── vcxvcxz
│   ├── 324322
│   ├── export.asc
│   ├── 22random_subfolder.xf
│   │   ├── -.method
│   │   ├── desktop.ini
│   │   ├── lock.file
│   │   └── submethods.xml
│   └── Sync
├── X93430.x
│   ├── dsferwe
│   ├── ewrwr342
│   ├── analysis
│   ├── fdsds
│   ├── vcxvcxz
│   ├── 324322
│   ├── export.asc
│   ├── random_subfolder222.xf
│   │   ├── -.method
│   │   ├── desktop.ini
│   │   ├── lock.file
│   │   └── submethods.xml
│   └── Sync

每个目录都包含一个export.asc文件。

我想将copy所有export.asc文件重命名为与其父目录同名的新目录。因此,最后根据上面的示例,我会将这些文件放在一个新文件夹中:

folder1.x.asc
random_folder4.x.asc
X93430.x.asc

我怎样才能做到这一点?

相关主题我已经关注但没有任何成功

  • 根据目录名称重命名文件
  • 复制时如何重命名文件?
linux rename
  • 1 个回答
  • 81 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