我有以下命令:
usb_soundcard_sink=$(pactl list short sinks | grep "alsa_output" | awk '{ print $2 }' | tail -n1)
Run Code Online (Sandbox Code Playgroud)
此命令的输出是:
alsa_output.pci-0000_00_1b.0.analog-stereo
Run Code Online (Sandbox Code Playgroud)
这是另一个查找索引号的命令:
var=$(pactl list short sinks | awk '$2=="alsa_output.pci-0000_00_1b.0.analog-stereo" {print $1}')
Run Code Online (Sandbox Code Playgroud)
输出:
0
Run Code Online (Sandbox Code Playgroud)
但我想在上面的命令中传递“usb_soundcard_sink”变量而不是硬编码值,即“alsa_output.pci-0000_00_1b.0.analog-stereo”。“usb_soundcard_sink”变量的 b'coz 值可能会动态变化。
我也尝试了以下方法:
var=$(pactl list short sinks | awk '$2=="$usb_soundcard_sink" {print $1}')
Run Code Online (Sandbox Code Playgroud)
但它不起作用
那么如何将“usb_soundcard_sink”变量的值传递给上述命令
这是我的数据文件:
Iam
python
newbie
Run Code Online (Sandbox Code Playgroud)
如果我使用awk访问列元素,只需$1就很容易。我如何在 python 上访问这个列元素?
我怎样才能把这个:
Johnny's penguin, (Tuxie), likes the following foods: French fries, and beef.
Run Code Online (Sandbox Code Playgroud)
对此:
abcdefghiklnoprstuwFJT',():.
Run Code Online (Sandbox Code Playgroud)
(这些是输入中使用的总字符数)
请注意小写字符“jmqvz”不在输入语句中,因此不输出。
顺序并不重要,但小写,然后大写,然后是特殊字符将是首选。
我确定我需要 sed/awk/etc。为此,但经过广泛搜索,我没有发现任何类似的东西。
我在我的机器上运行两个 minecraft 服务器。我想知道正在运行的单个 mc 服务器的 pid 是什么,并将其放入文件,以便我以后可以杀死它。所以对于这个例子,我只想知道 World2 的 PID 是什么,没有别的,并将其保存到文件中。
当我执行命令时
ps h -o pid,cmd -u minecraft
Run Code Online (Sandbox Code Playgroud)
我得到以下结果
31416 /usr/lib/jvm/java-8-oracle/jre/bin/java -Xmx2G -Xms1G -jar /data/mc-server/World1/minecraft_server.jar nogui
31706 /usr/lib/jvm/java-8-oracle/jre/bin/java -Xmx6G -Xms4G -jar /data/mc-server/World2/craftbukkit.jar nogui
Run Code Online (Sandbox Code Playgroud)
然后我使用这个命令管道到 grep
grep World2
Run Code Online (Sandbox Code Playgroud)
这就是我遇到困难的地方,然后我通过管道获取单个结果。我尝试了以下但无法得到它。
awk '{print $1 > world2.pid}'
Run Code Online (Sandbox Code Playgroud)
所以我的完整命令是:
ps h -o pid,cmd -u minecraft | grep World2 | awk '{print $1 > world2.pid}'
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
awk: cmd. line:1: {print $1 > world2.pid}
awk: cmd. line:1: ^ syntax error
Run Code Online (Sandbox Code Playgroud) I have this command
Here
vovar=OBJECTS
prvar="$(awk '/'"$vovar"'/,/}/ {gsub("$vovar"," "); gsub("}",": %s,"); gsub("{"," ");gsub(",",": %s,");print}' temp1)"
Contents of temp1
ciscoFlashCopyCompletionTrap NOTIFICATION-TYPE
OBJECTS
{
ciscoFlashCopyStatus
}
STATUS current
DESCRIPTION
"A ciscoFlashCopyCompletionTrap is sent at the
completion of a flash copy operation if such a trap
was requested when the operation was initiated.
"
::= { ciscoFlashMIBTraps 1 }
What I want the command to do
ciscoFlashCopyStatus
: %s: %s,
What it actually does
OBJECTS
ciscoFlashCopyStatus
: %s: %s,
How can I …
我有一个需要组织多次重复的文件,我的文件有 6 行 3120 行,每个成员有 1 或 2 位数字,总共 18720 个数字有 1 或 2 位数字。
我想计算我的文件中有多少个 1、多少个 2、多少个 3 等等到多少个 45,并输出组织最多报告的数字以减少重复。例子:
5 7 13 25 26 44
12 21 26 28 32 44
10 20 22 26 40 44
13 18 19 20 22 23
9 15 17 19 22 43
10 19 28 29 37 45
2 8 12 13 22 35
3 23 24 26 38 39
3 14 19 20 33 43
2 3 8 35 36 …Run Code Online (Sandbox Code Playgroud) 我试图以精确的字节数找到硬盘驱动器上文件的大小,但是每当大小变得太大时,数字就会变得很奇怪(例如 1.98329e+12)。我可以阻止它这样做或将其转换为精确的字节吗?
命令是:
ls -lR | grep -v '^d' | awk '{total += $5} END {print "Total:", total}'
Run Code Online (Sandbox Code Playgroud)
确切字节的图片:

奇怪号码图片:

du -sb无论目录有多大,该命令都会正确显示确切的字节。ntfs这样的,所以我尝试将其格式化为 ext4 并复制我的文件。结果与ntfs相同。我在一个文件中包含结构松散的记录,由 3 或 4 行文本组成(大部分)由空行分隔。并非所有记录都有空行分隔符,但每条记录的最后一行都以“已添加”一词开头。我想生成一个 csv 文件,每条记录在一行上,前面是行号。到目前为止,我只能生成由任意数量的空格和冗余逗号分隔的所有记录的串联。
从逻辑上讲,我试图实现以下目标:
读取行,如果行以“已添加”开头,则在末尾保留换行符,
否则将“换行符”替换为“,”,
或者如果行为空白,则将其删除
endif
样本数据:
Peter Green
Space Monkey at Area 51
Joined
Added by SF 3 weeks ago
Will Rossiter
Joined
Added by SF 3 weeks ago
Dean Matthews
Guitarist at Blues
Joined
Added by SF 3 weeks ago
Hobbit Mak
Farnborough, United Kingdom
Joined
Added by SF 3 weeks ago
Keneth W Moorfield
THE STOREMAN
Joined
Added by SF 3 weeks ago
Mick Georgious
Software Engineer
Joined
Added by SF …Run Code Online (Sandbox Code Playgroud) 我正在使用以下 awk 命令计算文件列中每个项目的百分比:
awk '{a[NR]=$2;x+=(b[NR]=$2);c[NR]=$1}END{while(++i<=NR)print c[i]"\t"a[i]"\t"100*b[i]/x"%"}' file.txt > out_file.txt
Run Code Online (Sandbox Code Playgroud)
文件.txt
N 38668442
V 14008521
ADJ 16112215
Run Code Online (Sandbox Code Playgroud)
输出文件.txt
N 38668442 56,213%
V 14008521 20,3644%
ADJ 16112215 23,4226%
Run Code Online (Sandbox Code Playgroud)
但是,我希望 out_file.txt 中的百分比四舍五入为 2 位小数。
所需的 out_file.txt
N 38668442 56,21%
V 14008521 20,37%
ADJ 16112215 23,42%
Run Code Online (Sandbox Code Playgroud)
参考这篇文章:https : //stackoverflow.com/questions/18696096/awk-calculate-sum-of-2nd-column-and-percentage-wrt-sum-and-print
我试图集成printf "%s,%d,%0.2f%\n到我的代码中,即使通过减少参数并将表达式限制为%0.2f%\n.
awk '{a[NR]=$2;x+=(b[NR]=$2);c[NR]=$1}END{while(++i<=NR)printf "%s,%d,%0.2f%\n",c[i]"\t"a[i]"\t"100*b[i]/x"%"}' file.txt > out_file.txt
Run Code Online (Sandbox Code Playgroud)
也bc没有解决。为什么它不产生所需的输出?在我看来,它应该有效,因为我printf "%0.2f\n"在几个关于同一问题的帖子中找到了表达方式。我错过了一些微不足道的东西吗?
我非常感谢任何帮助或建议!
我有一个包含 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命令的某种形式。