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 列应替换为无
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) 我想获得一行输出中的第二个参数。例如:
ps aux
Run Code Online (Sandbox Code Playgroud)
给我一个输出,其中第三列中包含 cpu-usage %CPU。
如何过滤输出以便只有该列?
我试过
ps aux | cut -f 3
Run Code Online (Sandbox Code Playgroud)
但这不起作用
另请参阅:过滤一行中的第 X 个元素?
我有一个关于在 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 号(如果可能,显示多种方式,以便我可以进一步探索)?
我有几个文件,每个文件都有不同的列数。我想转换它们以将它们插入到数据库中
例如文件 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) 无论第一个文件中的行长度如何,如何使粘贴中的第二个文件在同一位置开始?例如:
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) 我希望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)
我还认为我也非常确定(通过实验) …
我想根据第一列中的值在具有不同列的文件中引入换行符。
例如:
输入文件:
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) 我有一个大文件,每行都有几列。我熟悉使用cut -f -d
按编号选择特定列。
我检查了手册,cut
似乎没有办法正则表达式匹配列。
我具体想做的是:
这个操作最方便的终端工具是什么?
编辑:
简化示例
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
如有必要,我可以只为“你好”我有两个文件: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)
怎么能做到?
我得到的很好的例子:
尝试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)