小编Wol*_*olf的帖子

“rev”在现实生活中有什么应用?

根据https://www.geeksforgeeks.org/rev-command-in-linux-with-examples/

Linux 中的 rev 命令用于按字符反转行。

例如

wolf@linux:~$ rev
Hello World!
!dlroW olleH
Run Code Online (Sandbox Code Playgroud)

rev在现实生活中应用的例子是什么?

为什么我们需要反向字符串?

command-line string

15
推荐指数
2
解决办法
2786
查看次数

如何查看所有iptables表?

根据https://www.thegeekstuff.com/2011/01/iptables-fundamentals/

IPTables 有以下 4 个内置表。

过滤器、NAT、Mangle 和原始表

查看所有这些表的 iptables 命令是什么?

iptables

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

我可以拆分为两个字符,只运行一次 awk 吗?

ip a 产生一堆 IP 地址和接口状态

有了awk '/inet / {print $2}',我设法获得了 IP 和子网

wolf@linux:~$ ip a | awk '/inet / {print $2}'
127.0.0.1/8
10.10.0.1/24
10.10.1.1/24
wolf@linux:~$ 
Run Code Online (Sandbox Code Playgroud)

然后,我将它通过管道传输到另一个 awk 以删除 CIDR 表示法。

wolf@linux:~$ ip a | awk '/inet / {print $2}' | awk -F / '{print $1}'
127.0.0.1
10.10.0.1
10.10.1.1
wolf@linux:~$ 
Run Code Online (Sandbox Code Playgroud)

是否可以在不将 awk 输出通过管道传输到另一个 awk 的情况下执行此操作?

期望输出

wolf@linux:~$ ip a | <awk syntax here without additional piping>
127.0.0.1
10.10.0.1
10.10.1.1
wolf@linux:~$ 
Run Code Online (Sandbox Code Playgroud)

awk

7
推荐指数
4
解决办法
804
查看次数

nl:如何在第二行开始行号?

这是标准输出 ls -ln | nl

wolf@linux:~$ ls -lh | nl
     1  total 24
     2  -rw-rw-r-- 1 wolf wolf  186 Sep  24 22:18 01.py
     3  -rw-rw-r-- 1 wolf wolf  585 Sep  24 22:21 02.py
     4  -rw-rw-r-- 1 wolf wolf  933 Sep  24 22:26 03.py
wolf@linux:~$
Run Code Online (Sandbox Code Playgroud)

total 24是否可以从第二行的实际文件/目录开始,而不是从 开始编号?

期望输出

wolf@linux:~$ ls -lh | nl
        total 24
     1  -rw-rw-r-- 1 wolf wolf  186 Sep  24 22:18 01.py
     2  -rw-rw-r-- 1 wolf wolf  585 Sep  24 22:21 02.py
     3  -rw-rw-r-- 1 wolf …
Run Code Online (Sandbox Code Playgroud)

ls nl

7
推荐指数
4
解决办法
659
查看次数

如何在 sh 中并排列中打​​印多行变量?

这个问题基于Ask\xe2\x80\xafUbuntu 上的 \xc2\xa0similar 问题,\n但不是bash,我\xc2\xa0 希望在 中获得类似的输出sh

\n

bash 中没有问题;它按预期工作。

\n
wolf@linux:~$ echo $SHELL\n/usr/bin/bash\nwolf@linux:~$ \nwolf@linux:~$ varA=\'Aug 01\n> Aug 16\n> Aug 26\'\nwolf@linux:~$ \nwolf@linux:~$ varB=\'04:25\n> 03:39\n> 10:06\'\nwolf@linux:~$ \nwolf@linux:~$ echo "$varA $varB"\nAug 01\nAug 16\nAug 26 04:25\n03:39\n10:06\nwolf@linux:~$\nwolf@linux:~$ paste <(printf %s "$varA") <(printf %s "$varB")\nAug 01  04:25\nAug 16  03:39\nAug 26  10:06\nwolf@linux:~$\n
Run Code Online (Sandbox Code Playgroud)\n

但是,当我在 中尝试类似的命令时sh,我收到以下错误。

\n
wolf@linux:~$ sh\n$ \n$ varA=\'Aug 01\n> Aug 16\n> Aug 26\'\n\n$ varB=\'04:25\n> 03:39\n> 10:06\'\n$ \n$ echo "$varA $varB"\nAug 01\nAug 16\nAug 26 04:25\n03:39\n10:06\n$ \n$ paste <(printf …
Run Code Online (Sandbox Code Playgroud)

shell bash text-processing columns paste

6
推荐指数
1
解决办法
2650
查看次数

如何以破折号格式扩展IP地址?

样本数据

10.1.1.1-10.1.1.3
10.100.100.11-10.100.100.15
Run Code Online (Sandbox Code Playgroud)

Linux 中是否有任何可用的技巧可以将此 ip 扩展为以下格式?

10.1.1.1
10.1.1.2
10.1.1.3

10.100.100.11
10.100.100.12
10.100.100.13
10.100.100.14
10.100.100.15
Run Code Online (Sandbox Code Playgroud)

我知道有在线工具,例如https://techzoom.net/lab/ip-address-calculator/,但我想编写脚本而不是使用在线工具。

让我知道是否有解决方案(与什么工具、bash、python 或任何东西无关)

shell-script

5
推荐指数
2
解决办法
507
查看次数

将“10.1.1.1-10.1.1.3”格式转换为“10.1.1.1-3”

我知道这是可能的,可能通过使用awk,但我现在想不出解决方案。

我如何将 IP 格式从

10.1.1.1-10.1.1.3
10.100.100.11-10.100.100.31
Run Code Online (Sandbox Code Playgroud)

10.1.1.1-3
10.100.100.11-31
Run Code Online (Sandbox Code Playgroud)

这是我对 的尝试cut,但并没有真正按预期工作。

wolf@linux:~$ echo 10.1.1.1-10.1.1.3 | cut -d . -f 1,2,3,4
10.1.1.1-10
wolf@linux:~$ 

wolf@linux:~$ echo 10.100.100.11-10.100.100.31 | cut -d . -f 1,2,3,4
10.100.100.11-10
wolf@linux:~$ 
Run Code Online (Sandbox Code Playgroud)

awk text-processing cut

5
推荐指数
2
解决办法
540
查看次数

如何使用 sed 在文件开头附加存储在 shell 变量中的文本?

我在这里找到了有趣的讨论并尝试了给出的解决方案 sed

如何在文件开头插入文本?

/sf/answers/667361551/

它适用于普通文本,但不适用于将文本保存在变量中时。

wolf@linux:~$ cat file.txt 
1
2
3
wolf@linux:~$ 
Run Code Online (Sandbox Code Playgroud)

将文本 ( <added text>)添加到文件的开头

wolf@linux:~$ sed -i '1s/^/<added text>\n/' file.txt
wolf@linux:~$ 
Run Code Online (Sandbox Code Playgroud)

有用!

wolf@linux:~$ cat file.txt 
<added text>
1
2
3
wolf@linux:~$ 
Run Code Online (Sandbox Code Playgroud)

但是,当我用变量尝试它时,它不再起作用。

wolf@linux:~$ var='Text 1'
wolf@linux:~$ echo $var
Text 1
wolf@linux:~$ 

wolf@linux:~$ cat file.txt 
1
2
3
wolf@linux:~$ sed -i '1s/^/"$var"\n/' file.txt
wolf@linux:~$ cat file.txt 
"$var"
1
2
3
wolf@linux:~$ 
Run Code Online (Sandbox Code Playgroud)

而不是"$var",我如何调用$varinsed命令的实际值?我使用 GNU sed4.7:

sed (GNU sed) 4.7 Packaged by Debian …
Run Code Online (Sandbox Code Playgroud)

bash sed variable

5
推荐指数
1
解决办法
270
查看次数

Grep 仅数据 (-o) 和第一列

样本数据

wolf@linux:~$ cat data.csv 
A,4.4.4.4,4.4.4.5,4.4.4.6,3.3.3.3,3.3.3.4
B,1.1.1.1,1.1.1.1,1.1.1.2,1.1.1.3,3.3.3.3
C,1.1.1.1,1.1.1.1,1.1.1.1,1.1.1.1,1.1.1.1
D,2.2.2.1,2.2.2.1,2.2.2.2,2.2.2.3,2.2.2.4
wolf@linux:~$ 
Run Code Online (Sandbox Code Playgroud)

此样本中有一些重复数据。例如,有两个3.3.3.3位于 A 行和 B 行。

wolf@linux:~$ egrep 3.3.3.3 data.csv 
A,4.4.4.4,4.4.4.5,4.4.4.6,3.3.3.3,3.3.3.4
B,1.1.1.1,1.1.1.1,1.1.1.2,1.1.1.3,3.3.3.3
wolf@linux:~$ 
Run Code Online (Sandbox Code Playgroud)

现在我只对第一列A,B,C,D以及相关数据感兴趣。

这是我需要查找的 4 个数据。

2.2.2.3
3.3.3.3
4.4.4.4
5.5.5.5
Run Code Online (Sandbox Code Playgroud)

所以,我在 egrep 中使用|-o

wolf@linux:~$ egrep '2.2.2.3|3.3.3.3|4.4.4.4|5.5.5.5' data.csv
A,4.4.4.4,4.4.4.5,4.4.4.6,3.3.3.3,3.3.3.4
B,1.1.1.1,1.1.1.1,1.1.1.2,1.1.1.3,3.3.3.3
D,2.2.2.1,2.2.2.1,2.2.2.2,2.2.2.3,2.2.2.4
wolf@linux:~$ 
Run Code Online (Sandbox Code Playgroud)

输出很好,但是里面的数据太多了。我只想要相关数据和第一列。

所以,这是另一个尝试 -o

wolf@linux:~$ egrep -o '2.2.2.3|3.3.3.3|4.4.4.4|5.5.5.5' data.csv
4.4.4.4
3.3.3.3
3,3.3.3
2.2.2.3
wolf@linux:~$ 
Run Code Online (Sandbox Code Playgroud)

现在的问题是我无法A/B/C/D用这个获得第一列 ( )

下次尝试

wolf@linux:~$ egrep '2.2.2.3|3.3.3.3|4.4.4.4|5.5.5.5' data.csv | cut -d , -f 1
A
B
D
wolf@linux:~$ …
Run Code Online (Sandbox Code Playgroud)

grep text-processing csv

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

在这种情况下,为什么 cut -d ' ' 不适用于空格?

我对这个cut命令没有问题。

wolf@linux:~$ echo ab cd ef
ab cd ef

wolf@linux:~$ echo ab cd ef | cut -d ' ' -f 1
ab

wolf@linux:~$ echo ab cd ef | cut -d ' ' -f 2
cd
Run Code Online (Sandbox Code Playgroud)

但是,当我使用这样的不同输入尝试相同的命令时,我没有得到预期的输出。

wolf@linux:~$ ip address show eth0 | grep 'inet '
    inet 10.10.10.10/24 brd 10.10.10.255 scope global dynamic eth0

wolf@linux:~$ ip address show eth0 | grep 'inet ' | cut -d ' ' -f 1

wolf@linux:~$ ip address show eth0 | grep 'inet ' …
Run Code Online (Sandbox Code Playgroud)

grep cut

3
推荐指数
2
解决办法
602
查看次数

标签 统计

text-processing ×3

awk ×2

bash ×2

cut ×2

grep ×2

columns ×1

command-line ×1

csv ×1

iptables ×1

ls ×1

nl ×1

paste ×1

sed ×1

shell ×1

shell-script ×1

string ×1

variable ×1