标签: text-processing

查看 CSV 文件的列名?

我有一个 CSV 文件,我想获取每列的列名

样本 :

图片

我怎样才能用 awk 或 sed 或 grep 做到这一点?

command-line csv text-processing

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

从文件中读取行并存储它们的内容以在 shell 脚本中传递给 C 程序

我有一个 C 程序,输入是通过命令行给出的。现在我想从文本文件传递输入。有两个输入,ab,像这样一行一行地写:

a    b
2   423
4    56.9
7   83.5
Run Code Online (Sandbox Code Playgroud)

现在我想循环调用这个 txt 文件ab逐行传递每个和值,以便为每个ab值生成 C 程序的输出。

为此,我想编写一个 shell 脚本,该脚本将在读取模式下调用 txt 文件,在获取数据后,它将调用 C 程序,然后 C 程序将完成其余的工作,包括输出。

由于我是这个 shell 脚本的新手,我对如何打开文本文件然后逐行读取数据并将它们存储在 shell 脚本中的某个变量中感到困惑。

请建议我如何以读取模式打开文本文件,然后读取数据(可能不总是整数)并将它们存储在其他一些变量中。

command-line text-processing

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

如何在第一列中找到重复项,然后删除整行?

我有一个 xlsx 文件(110725x9 矩阵),我保存为文本类型(制表符分隔),因为我不知道 Unix 是否对 xlsx 文件有帮助。重复的行总是逐行连续的。

例如,假设文本文件如下。你会看到 3,4-th、7,8-th 和 17,18-th 行是相同的。我想删除不总是较低的上部重复行。

2009,37214611872    2009    135 20  17,1    17,4    19,2    21,8    24,1
2009,37237442922    2009    135 22  16,5    14,5    12,6    11,2    10,5
2009,37260273973    2009    136 0   7,7     7,2     7,1     7,3     7,5
2009,37260273973    2009    136 0   7,7     7,2     7,0     7,2    7,4
2009,37488584475    2009    136 20  14,6    15,1    16,4    18,3    20,1
2009,37511415525    2009    136 22  15,9    14,6    12,8    10,9    9,4
2009,37534246575    2009    137 0   8,2     6,9     6,2     6,2     6,4
2009,37534246575    2009    137 0 …
Run Code Online (Sandbox Code Playgroud)

command-line duplicate text-processing uniq

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

匹配第一次出现的两个文件和打印行

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

文件 1(唯一 ID):

    C84610112
    C96209347
    C84774620
    C84774691
    C85594749
    C89372772
    C89651687
    C89845500
    C89914896
    C91269765
    C91526663
    C92210411
    C92254517
    C93709504
    C94303303
    C95100561
    C95100609
    C95417520
    C95696352
    C96045246
    C96045496
    C96060727
    C96076986
Run Code Online (Sandbox Code Playgroud)

和文件2:

    1  C95696352 score:  -69.785 nathvy =  38 nconfs =          888
    2  C98230482 score:  -57.431 nathvy =  47 nconfs =          575
    3  C96209347 score:  -57.128 nathvy =  24 nconfs =         1188
    4  C36510773 score:  -56.502 nathvy =  38 nconfs =         7595
    5  C04355288 score:  -56.400 nathvy =  41 nconfs =        50502
    6  C89372772 …
Run Code Online (Sandbox Code Playgroud)

command-line text-processing

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

及时根据快照查找可能的进程

介绍

我试图捕捉在有限的时间段内开始的进程。

我创建了一个脚本 ( ps-suspects.sh),其中:

  • ps-suspects.sh从终端运行。
  • 我启动并关闭了一个应用程序,比如说桌面计算器。
  • 我按Ctrl+C结束ps-suspects.sh
  • 我想知道计算器的进程名称是什么
  • 我不想列出在整个快照期间运行的所有其他进程名称。

问题

我有一段需要微调的代码:

$ sort -k15 ~/pid.log | uniq -f14 -c
Run Code Online (Sandbox Code Playgroud)

这是它产生的:

$ head ~/pid.tmp
  1 /mnt/e/bin/ps-suspects.sh Possible suspects causing problems
 63 1 S root       127     2  0  60 -20 -     0 -      Sep08 ?        00:00:00 [acpi_thermal_pm]
 63 1 S root        75     2  0  60 -20 -     0 -      Sep08 ?        00:00:00 [ata_sff]
 63 1 S root       447     2  0  60 -20 - …
Run Code Online (Sandbox Code Playgroud)

command-line text-processing

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

在 Ubuntu 上进行一些处理后,BASH 脚本挂起

我一直在 Red Hat 服务器上运行下面的脚本,它工作正常并完成了工作。我提供给它的文件包含 50 万行(大约 500000 行),这就是为什么(为了更快地完成它)我在 while 循环块的末尾添加了一个“&”

但是现在我已经设置了一个带有 8 GB RAM 的桌面,在它上面运行 Ubuntu 18.04,并且运行相同的代码只完成了几千行然后挂起。我阅读了一些关于它的内容并将堆栈限制增加到无限制,但它仍然在 80000 行左右后挂起,关于如何优化代码或调整我的 PC 参数以始终完成工作的任何建议?

while read -r CID60
do    
 { 
       OLT=$(echo "$CID60" | cut -d"|" -f5) 
       ONID=${OLT}:$(echo "$CID60" | cut -d, -f2 | sed 's/ //g ; s/).*|//') 
       echo $ONID,$(echo "$CID60" | cut -d"|" -f3) >> $localpath/CID_$logfile.csv       
  } &     
done < $localpath/$CID7360
Run Code Online (Sandbox Code Playgroud)

输入:

202-00_MSRFKH00OL6:R1.S1.LT7.PON8.ASSN45| Unlocked|12-654-0330|Up|202-00_MSRFKH00OL6|P282018767.C2028 ( network, R1.S1.LT7.PON8.ONT81.SERV1 )|

202-00_MSRFKH00OL6:R1.S1.LT7.PON8.ASSN46| Unlocked|12-654-0330|Down|202-00_MSRFKH00OL6|P282017856.C881 ( local, R1.S1.LT7.PON8.ONT81.C1.P1 )|

202-00_MSRFKH00OL6:R1.S1.LT7.PON8.ASSN52| Unlocked|12-664-1186|Up|202-00_MSRFKH00OL6|P282012623.C2028 ( network, R1.S1.LT7.PON8.ONT75.SERV1 )|
Run Code Online (Sandbox Code Playgroud)

输出:

202-00_MSRFKH00OL6:R1.S1.LT7.PON8.ONT81.SERV1,12-654-0330 …
Run Code Online (Sandbox Code Playgroud)

bash text-processing background-process

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

如何从一行中删除括号?

给定这样的行:"hello my (name) is (user),如何'()'使用sed删除所有内容?

我目前正在做的是使用视觉块突出显示该行,然后:s/(//g一次又一次地为). 有没有办法(, )在一个sed命令中删除两者?

我的最终目标是 "hello my name is user"

sed text-processing

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

如何将内容替换为多个文件?

我有多个包含如下内容的文件:

File 1

NC_12548  og789 |nd784  -2 -54 -6

NC_12548  og789 |nd784  -2 -54 -6

NC_12548  og789 |nd784  -2 -54 -6

File2

NC_54456  og789 |nd784  -5 -56 -6

NC_98123  og859 |nd784  -5 -84 -5

NC_689.1  og456 |nd784  -5 -54 +8

File3

NC_54456  og789 |nd784  -5 -56 -6

NC_98123  og859 |nd784  -5 -84 -5

NC_689.1  og456 |nd784  -5 -54 +8
Run Code Online (Sandbox Code Playgroud)

我想保留仅有的前两列 (NC_12345 og855) 并丢弃其余的列。我怎样才能做到这一点?

command-line bash perl sed text-processing

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

使用 awk 或 sed 删除多列

我有一个包含 6037 个空格分隔列和 450 行的数据库,如下所示:

1807 1452 1598 1 6.655713  A B A B ... 0 
1808 1452 1763 1 9.362033  0 0 A B ... A 
1809 1452 1527 2 6.728534  A B A A ... B 
1810 1452 1367 2 9.4055  A B A A B ... A 
... ... ... ... ... ... ... ... ... ...
1812 1452 1258 1 6.363032  0 0 A B ... B
Run Code Online (Sandbox Code Playgroud)

我想获得一个只有前 676 列的新数据库。

最好是使用awksed命令的某种形式。

sed awk text-processing

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

如何将字符串仅添加到数字文本行

假设我有 6 行文本。

Series
Of
Word
73914
Again
Word
Run Code Online (Sandbox Code Playgroud)

我需要在包含数字的行的开头添加一个字符串。说我插入number-

Series
Of
Word
number-73914
Again
Word
Run Code Online (Sandbox Code Playgroud)

目前我运行两个命令来达到预期的结果。我想知道是否有更有效的方法。

注意:有 1000 多行,所以最好这适用于所有行(我已经说明了)。

command-line sed awk text-processing

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