小编slm*_*slm的帖子

用于查看流中前 N 项的工具

我正在寻找可以完成以下任务的现有 Linux 命令行工具:

考虑有一个输入流/dev/inputstream,它喷出无限的数据流,如下所示:

A
A
B
A
C
Z
A
.
.
.
Run Code Online (Sandbox Code Playgroud)

注意:(每一行是字母表中的一个字符)。

该工具以下列方式使用:

cat /dev/inputstream | tool
Run Code Online (Sandbox Code Playgroud)

该工具的输出应该类似于“top”命令中的输出。它应该是一个持续更新的前 N ​​个频繁出现项目的列表。

例如:

A -- 10 times
B -- 8 times
Z -- 7 times
C -- 2 times
D -- 1 time
Run Code Online (Sandbox Code Playgroud)

如果流不是无限的,我可以使用sortand完成此操作uniq

streaming top sort command

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

面对VPN的接口优先级

我有几个接口:wlan0、eth0、lo,有时还有 tun0。当我连接到 Juniper VPN,创建一个 tun0 接口时,我在其他接口上的现有连接(可能除了 lo)被中断,它们使用 tun0 接口重新连接。

我只想在我选择的特定连接上使用 tun0,而不是所有连接,也不是默认情况下。如何确保默认接口是 eth0 或 wlan0?的输出在ip addr这里:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
    link/ether d4:be:d9:65:c1:45 brd ff:ff:ff:ff:ff:ff
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether …
Run Code Online (Sandbox Code Playgroud)

networking ubuntu ip vpn network-interface

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

替换两个字符串之间的指定字符?

我有事要完成。我需要将所有出现的 & 替换<ex> </ex>为 #内部或之间。下面的实际例子:

a & b & c <ex> a & b & c </ex> a & b & c
Run Code Online (Sandbox Code Playgroud)

再次,我需要替换所有出现的 & 内部<ex>和之前</ex>

预期输出:

a & b & c <ex> a # b # c </ex> a & b & c
Run Code Online (Sandbox Code Playgroud)

请发布关于你们如何设法做到的解释。

编辑#1

请只为我提供sed解决方案,因为我将在 AS400 系统上运行它并且无法安装 Perl 或任何其他解释器。

sed replace

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

如何将脚本的输出包含到 zsh 提示符中

我想将 Python 脚本的输出添加到我的zsh提示中,但我不知道该怎么做?

这是通过手册页中所谓的“提示扩展”完成的吗?

请有人让我走上正轨,即发布一些我在 Google 上找不到的有用链接。

prompt zsh python

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

我想将数字之和除以一个值

这是我的 Unix shell 脚本代码

#! /bin/ksh

echo "Enter your first number:"    
read first

echo "Enter your second number:"    
read second

echo "Enter your third number:"    
read third

SUM=`expr $first + $second + $third`    
AVERAGE="$SUM/3"

echo "The average is $AVERAGE"
Run Code Online (Sandbox Code Playgroud)

基本上我想找到用户输入的 3 个值的平均值。输入所有值后得到的结果,例如所有值加起来为 12;是“平均值是12/3”。

shell scripting ksh

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

加入带有 cat 混淆的文件

如果我执行以下命令:

$ cat picture.jpg > copy1.jpg
Run Code Online (Sandbox Code Playgroud)

$ cat -v picture.jpg > copy2.jpg
Run Code Online (Sandbox Code Playgroud)

copy1.jpg是 的完美副本picture.jpg,但copy2.jpgpicture.jpg.

我认为这是因为copy2.jpg已经将猫认为的每个行尾都替换为 a ^M,并且每个^M都比行尾大。这样对吗?

如果那样做cat copy2.jpg,我发现没有^Min 的实例copy2.jpg

这里发生了什么?如果 cat>的输出可能与其输入不同,那么可以依靠 cat 完美地使用 连接文件吗?

cat

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

如何按由数字、字母和标点字符混合的列对文件进行排序?

我有一个格式为的文本文件 -

b   SN:2
d   SN:5
f   SN:10
g   SN:11
h   SN:15
i   SA:3
j   SN:1
k   SN:4
Run Code Online (Sandbox Code Playgroud)

我想按第二列排序,实际上是第二列中的数值。我试过了 -

$ sort -n -k2,2 file
$ sort -k2.4,2.5n file
Run Code Online (Sandbox Code Playgroud)

但似乎没有任何效果。

sort

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

`xargs` 在哪里添加来自 STDIN 的选项?

由于某些原因,选项顺序对于命令来说很重要。例如,不同的选项顺序可能会导致 中的操作不同ffmpeg,那么xargs从哪里添加选项呢stdin

例如:

$ echo 'output.avi' | xargs ffmpeg -i input.avi -r 24
Run Code Online (Sandbox Code Playgroud)

完全等同于:

$ ffmpeg -i inpit.avi -r 24 output.avi
Run Code Online (Sandbox Code Playgroud)

但是如果我想通过管道input.avi从发送echoxargs ffmpeg -i -r 24 output.avi,如何将 STDIN 中的字符串设置到指定位置?

xargs

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

如何从 IP 获取 NetBIOS 名称

我的朋友有一台使用 Windows 的电脑,我想知道那台电脑的名称。我现在只知道他的IP地址是10.0.0.2,我怎样才能从我的Linux机器上获取他的计算机名称?

hostname netbios

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

将多行连接成“特殊字符”分隔的字符串

假设我有这些 Bash 命令:

$ sha="$(git log --all --format=format:%H -n 1 -- .npp.json)"
$ git branch  --contains "$sha" | tr -d " *"
Run Code Online (Sandbox Code Playgroud)

现在可能会记录如下内容:

master
dev
remotes/origin/foo
Run Code Online (Sandbox Code Playgroud)

我的问题是 - 是否有一些 Bash 实用程序可以为我连接所有输出,以便我得到如下内容:

master:dev:remotes/origin/foo
Run Code Online (Sandbox Code Playgroud)

该实用程序可能如下所示:

$ git branch  --contains "$sha" | tr -d " *" | concat ":"
Run Code Online (Sandbox Code Playgroud)

当然,最终值需要回显,所以它可能看起来像:

$ result="$(git branch  --contains "$sha" | tr -d " *" | concat ":")"
$ echo "$result"
Run Code Online (Sandbox Code Playgroud)

shell-script text-processing

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