标签: columns

列不匹配和替换

input.txt(制表符分隔)

TTTTOTTT00000000008  RTTTT899      5.00E-28
TTTTOTTT00000000046  RTTTWRR       3.00E-31
TTTTOTTT00000000051  2.00E-11
TTTTOTTT00000000051  7.00E-12
TTTTOTTT00000000054  5.00E-22
TTTTOTTT00000000061  YTRYR         1.00E-11
TTTTOTTT00000000078  ETNRR8        6.00E-17
TTTTOTTT00000000174  TYTYT         1.00E-11
TTTTOTTT00000000203  UUUE          9.00E-20
Run Code Online (Sandbox Code Playgroud)

我的文件与列混合在一起。在这个文件(input.txt)中。第 3 列有空格,列应填充第 2 行,第 2 列应替换为无

output.txt(制表符分隔)

TTTTOTTT00000000008  RTTTT899      5.00E-28
TTTTOTTT00000000046  RTTTWRR       3.00E-31
TTTTOTTT00000000051  none          2.00E-11
TTTTOTTT00000000051  none          7.00E-12
TTTTOTTT00000000054  none          5.00E-22
TTTTOTTT00000000061  YTRYR         1.00E-11
TTTTOTTT00000000078  ETNRR8        6.00E-17
TTTTOTTT00000000174  TYTYT         1.00E-11
TTTTOTTT00000000203  UUUE          9.00E-20
Run Code Online (Sandbox Code Playgroud)

sed awk perl text-processing columns

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

获取每行中的第 X 个参数

我想获得一行输出中的第二个参数。例如:

ps aux
Run Code Online (Sandbox Code Playgroud)

给我一个输出,其中第三列中包含 cpu-usage %CPU。

如何过滤输出以便只有该列?

我试过

ps aux | cut -f 3
Run Code Online (Sandbox Code Playgroud)

但这不起作用

另请参阅:过滤一行中的第 X 个元素?

text-processing columns

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

打印 /etc/passwd 的一些字段

我有一个关于在 Linux 中使用通配符的问题。在这里,我从 /etc/passwd 文件中的一长串行中找到了一些行。

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
...
Run Code Online (Sandbox Code Playgroud)

什么是合适的命令/命令来仅从这一行打印出用户名、UID 号和 GID 号(如果可能,显示多种方式,以便我可以进一步探索)?

text-processing regular-expression csv columns

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

如何使用 NF 和 for 循环优化脚本

我有几个文件,每个文件都有不同的列数。我想转换它们以将它们插入到数据库中

例如文件 test01:

0001    000000000000001 john smith  45  500
0002    000000000000002 peter jackson   20  80
0003    000000000000002 robert brown    35  100
0004    000000000000007 sarah white 40  300
Run Code Online (Sandbox Code Playgroud)

我想要的输出是:

('0001','000000000000001','john smith','45','500'),
('0002','000000000000002','peter jackson','20','80'),
('0003','000000000000002','robert brown','35','100'),
('0004','000000000000007','sarah white','40','300');
Run Code Online (Sandbox Code Playgroud)

为了实现这一点,我使用以下脚本:

cat test01 |awk -F'\t' '{print "('\''"$1"'\'','\''"$2"'\'','\''"$3"'\'','\''"$4"'\'','\''"$5"'\''),"}' |sed '$ s/.$/;/' 
Run Code Online (Sandbox Code Playgroud)

它工作正常,问题是当我找到另一个具有不同列数的文件时,所以我必须手动修改脚本。

我知道我可以通过 AWK 的变量 NF 获得列数,但是如何将此变量与脚本中的 for 循环结合起来?

当我尝试

cat test01 | awk '{for (i = 1; i <= NF; i++){print $i"'\'','\''"}}'
Run Code Online (Sandbox Code Playgroud)

我得到这个结果:

0001','
000000000000001','
john','
smith','
45','
500','
0002','
000000000000002','
peter','
jackson','
20',' …
Run Code Online (Sandbox Code Playgroud)

awk csv columns

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

在 Linux 粘贴命令中对齐输出

无论第一个文件中的行长度如何,如何使粘贴中的第二个文件在同一位置开始?例如:

file1:
small
incredibly humungous

file 2:
A
B
Run Code Online (Sandbox Code Playgroud)

我想粘贴 file1 file2 来输出:

small                        A
incredibly humungous         B
Run Code Online (Sandbox Code Playgroud)

代替:

small                        A
incredibly humungous                        B
Run Code Online (Sandbox Code Playgroud)

linux columns output

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

按一列按字典顺序对多个分隔文件进行排序,按另一列按数字排序

我希望min_ex按第一列按字典顺序和第二列按数字对下面的 TSV 文件(称为 )进行排序。

A X, N    2.2
A, N    5.7
A, A    5.8
A, N    2.1
A, T    0.2
B G, M    2.3
B, L    0.1
B, I    0.2
B, M    9.3
B, C    9.9
Run Code Online (Sandbox Code Playgroud)

我尝试用 来做到这一点sort -k1,2 -n min_ex。但它不起作用,因为它会导致:

A, A    5.8
A, N    2.1
A, N    5.7
A, T    0.2
A X, N    2.2
B, C    9.9
B G, M    2.3
B, I    0.2
B, L    0.1
B, M    9.3
Run Code Online (Sandbox Code Playgroud)

还认为我也非常确定(通过实验) …

awk text-processing sort columns text-formatting

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

根据值列中的文本在具有不同列的文件中引入换行符

我想根据第一列中的值在具有不同列的文件中引入换行符。

例如:

输入文件:

1aa6 HETATM 4MO A 803
1aa6 HETATM SF4 A 800
1ao0 HETATM 5GP A 467
1ao0 HETATM SF4 B 466
1ao0 HETATM SF4 C 466
1b0y HETATM SF4 A  87
1blu HETATM SF4 A 101
1blu HETATM SF4 A 102
Run Code Online (Sandbox Code Playgroud)


所需输出:

1aa6 HETATM 4MO A 803
1aa6 HETATM SF4 A 800

1ao0 HETATM 5GP A 467
1ao0 HETATM SF4 B 466
1ao0 HETATM SF4 C 466

1b0y HETATM SF4 A  87

1blu HETATM SF4 A 101
1blu …
Run Code Online (Sandbox Code Playgroud)

sed awk csh cat columns

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

`cut`:选择包含字符串的列

我有一个大文件,每行都有几列。我熟悉使用cut -f -d按编号选择特定列。

我检查了手册,cut似乎没有办法正则表达式匹配列。

我具体想做的是:

  • 选择每一行的第二列
  • 并选择所有包含字符串“hello”的列(可能没有,如果没有,它可能是任何列,而不是每行的相同列)

这个操作最方便的终端工具是什么?

编辑:

简化示例

x ID23 a b c hello1
x ID47 hello2 a b c
x ID49 hello3 a b hello4
x ID53 a b c d
Run Code Online (Sandbox Code Playgroud)

我想要的结果是:

ID23 hello1
ID47 hello2
ID49 hello3 hello4
Run Code Online (Sandbox Code Playgroud)

或者:

ID23 hello1
ID47 hello2
ID49 hello3 hello4
ID53
Run Code Online (Sandbox Code Playgroud)

详细说明给出的示例:

  • 列由一个空格定义
  • 是否“仅在字符串存在时才打印”并不重要,grep如有必要,我可以只为“你好”
  • 我们可以假设字符串“hello”永远不会出现在第 1 列或第 2 列中。

terminal text-processing regular-expression cut columns

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

加入具有不同字段编号的两个文件

我有两个文件:s2.txt

14 3KC12828ACBA 
43 8DG59242BAAD 
25 8DG60566AAAF 
6 8DG60912AAAF
Run Code Online (Sandbox Code Playgroud)

和 pbas.txt:

3AG33662AAAC
3KC12828ACBA
8DG59242BAAD
8DG60349AAAC
8DG60565AAAG
8DG60566AAAF
8DG60568AAAC
8DG60912AAAF
8DG62635AAAC
Run Code Online (Sandbox Code Playgroud)

在 UNIX 上使用 bash 我想加入文件以获得这样的一个文件:

3AG33662AAAC
3KC12828ACBA 14
8DG59242BAAD 43
8DG60349AAAC
8DG60565AAAG
8DG60566AAAF 25
8DG60568AAAC
8DG60912AAAF 6
8DG62635AAAC
Run Code Online (Sandbox Code Playgroud)

怎么能做到?

text-processing columns join

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

使用 grep 过滤后,是否有在终端中重新对齐表格数据的技巧?

我得到的很好的例子:

  • 尝试ss -axl显示正在侦听的 UNIX 域套接字。例如,这可能会给出:

      Netid     State      Recv-Q     Send-Q                                                                Local Address:Port              Peer Address:Port     
      u_str     LISTEN     0          0                                                              /run/systemd/private 9683                         * 0        
      u_str     LISTEN     0          0                                                        /run/systemd/fsck.progress 9690                         * 0        
      u_str     LISTEN     0          0                                                       /run/systemd/journal/stdout 9705                         * 0        
      u_str     LISTEN     0          0                                                   /var/run/dbus/system_bus_socket 13830                        * 0        
      u_str     LISTEN     0          0                                                                   /run/thd.socket 13833                        * 0        
      u_str     LISTEN     0          0                                                              /var/run/docker.sock 13835                        * 0        
      u_str     LISTEN     0          0                                                          /run/avahi-daemon/socket 13837                        * 0        
      u_str     LISTEN     0          0                                                    /run/user/1000/systemd/private 16088                        * 0        
      u_str …
    Run Code Online (Sandbox Code Playgroud)

whitespace columns text-formatting

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