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

我怎样才能用 awk 或 sed 或 grep 做到这一点?
我有一个 C 程序,输入是通过命令行给出的。现在我想从文本文件传递输入。有两个输入,a和b,像这样一行一行地写:
a b
2 423
4 56.9
7 83.5
Run Code Online (Sandbox Code Playgroud)
现在我想循环调用这个 txt 文件a并b逐行传递每个和值,以便为每个a和b值生成 C 程序的输出。
为此,我想编写一个 shell 脚本,该脚本将在读取模式下调用 txt 文件,在获取数据后,它将调用 C 程序,然后 C 程序将完成其余的工作,包括输出。
由于我是这个 shell 脚本的新手,我对如何打开文本文件然后逐行读取数据并将它们存储在 shell 脚本中的某个变量中感到困惑。
请建议我如何以读取模式打开文本文件,然后读取数据(可能不总是整数)并将它们存储在其他一些变量中。
我有一个 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) 我有两个看起来像这样的文件:
文件 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) 我试图捕捉在有限的时间段内开始的进程。
我创建了一个脚本 ( ps-suspects.sh),其中:
ps-suspects.sh从终端运行。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) 我一直在 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) 给定这样的行:"hello my (name) is (user),如何'()'使用sed删除所有内容?
我目前正在做的是使用视觉块突出显示该行,然后:s/(//g一次又一次地为). 有没有办法(, )在一个sed命令中删除两者?
我的最终目标是 "hello my name is user"
我有多个包含如下内容的文件:
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) 并丢弃其余的列。我怎样才能做到这一点?
我有一个包含 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 列的新数据库。
最好是使用awk或sed命令的某种形式。
假设我有 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 多行,所以最好这适用于所有行(我已经说明了)。