我有一个字符串列表,如:
StringA 45
StrinB 98
StringA 35
StringA 83
StrinB 78
StringC 65
StrinB 98
Run Code Online (Sandbox Code Playgroud)
我想过滤掉重复项,打印出现的次数(子字符串的出现次数可以不同,但在一侧由 ^(字符串开头)分隔,在另一侧由 \tab 分隔)加上仅打印最高数字发现与字符串相关联,即我希望输出类似于(字符串、出现次数和分数也可以以不同的顺序出现):
3 83 StringA
3 98 StrinB
1 65 StringC
Run Code Online (Sandbox Code Playgroud)
我明白,我可以使用的组合sort,并uniq以同样的事件并删除重复进行排序,但这并不占不同的“得分”。我想知道如何在忽略分数的同时进行排序,然后在跟踪最高分数的同时过滤掉重复项。
这是我的输入文件的一些行:
08:51:36 UN 127.0.0.1
08:51:36 UN 127.0.0.2
08:51:36 UN 127.0.0.3
08:53:50 DN 127.0.0.1
08:53:50 DN 127.0.0.2
08:53:50 DN 127.0.0.3
Run Code Online (Sandbox Code Playgroud)
我想写一个shell脚本,输入ip地址
./CountRate.sh 127.0.0.1
Run Code Online (Sandbox Code Playgroud)
此脚本必须返回 0.5。公式为: IP 为 127.0.0.1 的节点状态 UN 为“1”的次数除以出现 127.0.0.1 的行数为“2”。我必须使用哪些 Linux 命令来实现这一目标?
嘿伙计们,我有以下脚本,我只是尝试在其中打印表情符号,但是当我执行脚本时,我看不到表情符号,但是当我printf emoji-utf-code从控制台执行时,它可以工作。我错过了什么吗?
#!/usr/bin/env bash
UNICORN='\U1F984\n'
# this does not work when I run the script
printf ${UNICORN}
printf '\U1F984\n'
echo "Riding an ${UNICORN}"
# but when I type the printf command with the UTF-8 code in the console it works.
Run Code Online (Sandbox Code Playgroud)
PS:我怎么能在这里添加一个shell来运行脚本?我在其他发布的问题上看到过。
编辑 1:在一些评论后更正了代码。
仍然在控制台上得到这个:
注意:我重新编写了问题以澄清问题。这是一个微不足道的问题,可以分为几个部分来回答,因为这个问题有几个属性。
不幸的是,当提出问题的人理解(知道)答案的某些部分以及问题的结构时,问题可能会被重新设计。
因此,问题是从与原始问题不同的角度提出的。
如何使用 shell 实用程序更改 Linux 控制台的颜色设置¹? 如何使用 shell 实用程序更改终端仿真器的颜色设置¹?
本来,我想在执行shell脚本的过程中改变Linux控制台的背景颜色。以下命题如我所愿。
#!/bin/sh
# set the background color of the terminal
tput setab 6
clear
printf "%s\n" 'background: cyan'
# do some tasks
cd /usr/src/initramfs
pwd
ls -l
# the background of the shell output is cyan
Run Code Online (Sandbox Code Playgroud)
尽管如此,有人可能会遇到几个小故障(或困难)。
例如,如果屏幕未被清除,则在 shell 脚本执行期间,背景颜色仅应用于文本输出。如果tput setab 6使用命令行提交命令并且没有清除屏幕,则背景颜色仅应用于输出文本的一小部分。如果在命令行tput setab 6上提交命令并清除屏幕,则背景颜色将应用于全屏,但仅在提交另一个命令之前持续存在。[...]
¹背景色
我正在尝试编写一个脚本,该脚本将从我提供给脚本的列表中收集安装在远程主机上的主机名、IP 和总内存。该脚本将从 Redhat 和 Solaris 机器收集信息。下面是我的脚本的样子:
#!/bin/bash
echo > ip_info.output
echo -e "\n"
for host in `cat ip_adds`
do
echo "Hostname:" $host
sudo ssh -o BatchMode=yes -o ConnectTimeout=5 $host "echo IP Address:; ip route get 1 | awk '{print $NF;exit}'; free -m | grep Mem | awk '{print $1,$2}'"
echo -e "\n"
done
Run Code Online (Sandbox Code Playgroud)
当我运行脚本时,出现以下错误:
awk: {print ,}
awk: ^ syntax error
awk: {print ,}
awk: ^ syntax error
awk: cmd. line:1: {print ,}
awk: cmd. line:1: ^ unexpected newline or …Run Code Online (Sandbox Code Playgroud) 我有一个脚本会尝试提取文件的基本名称,然后我用它做额外的工作。仅当将此脚本与具有此命名约定的文件(包括空格和字符 - 不确定是什么触发错误)一起使用时,我才会收到 basename 额外操作数错误。
文件名:JERASH-XZ 837367432.pdf
这里的脚本一旦执行就会产生错误:
filetimestamp=$(date "+%F-%T")
timenow=$(date -u)
for file in files/input/*
do
printf "Break 1 \n"
#filename no extension:
filenamenopath=$(basename $file)
filenamenoext=${filenamenopath%.pdf}
printf "Break 2 \n"
#check if file is pdf
printf "File Name with No Path:" $filenamenopath
printf "Break 3 \n"
Run Code Online (Sandbox Code Playgroud)
这是错误:
Break 1 basename: 额外的操作数 'XZ'
我需要使用 curl 对我们的网络农场进行一些测试。每个服务器都有一些默认页面,上面有一些像这样的措辞:
"Welcome to webappsrv01"
"Welcome to webappsrv02" and so forth.
Run Code Online (Sandbox Code Playgroud)
我如何使用 curl 和 grep(?) 来获取“Welcome to webappsrv(?)”字符串,以便我可以在点击 webfarm 时在屏幕上看到它的输出?我需要知道我打的是哪个服务器。
我正在使用 Linux Mint,并且我在系统启动时运行以下服务自动截图, 但是如果计算机空闲,我需要它停止截图,并在它处于活动状态时再次运行(例如,鼠标是移动)。如何做到这一点?
while true; do
scrot -d 70 '%Y-%m-%d-%H:%M:%S.jpg' -e 'mv $f
~/TMP/TempScreenShots'
done
Run Code Online (Sandbox Code Playgroud) 我正在尝试在另一个脚本中运行一个脚本,如下所示:
$a="$(sh test_part.sh /AB/pass_file.txt)"
echo $a
Run Code Online (Sandbox Code Playgroud)
现在sh test_part.sh /AB/pass_file.txt返回如下输出:
ABD
SDFDR
TDFDG
DGFKFH
Run Code Online (Sandbox Code Playgroud)
我想将其按$a原样存储在变量中。使用我当前的脚本,我收到以下错误:
test_part.sh: line 2: $'=ABD\nSDFDR\nTDFDG\nDGFKFH': command not found
Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个脚本(script1.sh),当给定一堆字母时,它会找到每个可能的单词。
单词必须以混乱的第一个字母开头并以最后一个字母结尾。
单词的字母需要遵循混乱中的字母顺序。
混乱中的每个字母都可以使用多次。
所以这
./script1.sh "qwertyuytresdftyuiokn"
Run Code Online (Sandbox Code Playgroud)
应该输出queen和question而不是“抚慰”,因为“E”来之前,“U”,并在混乱的“i”。
我尝试将第一个、最后一个和剩余的字母分配给变量,然后使用 egrep 查找单词,但我找不到使用字母顺序的方法。所以这个也给了我无效的词。
#!/bin/bash
first_letter=$(echo $@ | cut -c1)
last_letter=$(echo $@ |rev| cut -c1)
remaining_letters=$(echo $@ | cut -c2- | rev | cut -c2-)
grep -E "^$first_letter[$remaining_letters]*$last_letter$" /usr/share/dict/words
Run Code Online (Sandbox Code Playgroud)
然后我尝试将混乱变成一个数组,但又一次,我找不到在混乱中找到遵守顺序的单词的方法。