标签: scripting

计算子串出现的次数并保持最高分

我有一个字符串列表,如:

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以同样的事件并删除重复进行排序,但这并不占不同的“得分”。我想知道如何在忽略分数的同时进行排序,然后在跟踪最高分数的同时过滤掉重复项。

linux scripting sed sort uniq

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

如何计算行数并在命令行上进行简单除法?

这是我的输入文件的一些行:

  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 命令来实现这一目标?

scripting text-processing

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

将表情符号添加到脚本不起作用

嘿伙计们,我有以下脚本,我只是尝试在其中打印表情符号,但是当我执行脚本时,我看不到表情符号,但是当我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:在一些评论后更正了代码。

仍然在控制台上得到这个:

在此处输入图片说明

scripting bash

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

如何设置Linux控制台屏幕的背景色?

注意:我重新编写了问题以澄清问题。这是一个微不足道的问题,可以分为几个部分来回答,因为这个问题有几个属性。

不幸的是,当提出问题的人理解(知道)答案的某些部分以及问题的结构时,问题可能会被重新设计。

因此,问题是从与原始问题不同的角度提出的。

如何使用 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上提交命令并清除屏幕,则背景颜色将应用于全屏,但仅在提交另一个命令之前持续存在。[...]

¹背景色

linux scripting terminal-emulator tput terminfo

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

用于远程收集主机名、IP 和主机总内存的 Bash 脚本

我正在尝试编写一个脚本,该脚本将从我提供给脚本的列表中收集安装在远程主机上的主机名、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)

linux scripting ssh awk quoting

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

基名额外操作数错误

我有一个脚本会尝试提取文件的基本名称,然后我用它做额外的工作。仅当将此脚本与具有此命名约定的文件(包括空格和字符 - 不确定是什么触发错误)一起使用时,我才会收到 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'

scripting basename variable

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

curl 和 grep(?) 来抓取特定的字符串 - 如何?

我需要使用 curl 对我们的网络农场进行一些测试。每个服务器都有一些默认页面,上面有一些像这样的措辞:

"Welcome to webappsrv01"
"Welcome to webappsrv02"   and so forth.
Run Code Online (Sandbox Code Playgroud)

我如何使用 curl 和 grep(?) 来获取“Welcome to webappsrv(?)”字符串,以便我可以在点击 webfarm 时在屏幕上看到它的输出?我需要知道我打的是哪个服务器。

scripting curl

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

如何检测电脑是否空闲?

我正在使用 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)

scripting screenshot linux-mint services

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

在另一个脚本中运行一个脚本

我正在尝试在另一个脚本中运行一个脚本,如下所示:

$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)

scripting

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

如何查找遵循特定顺序的单词

我正在尝试编写一个脚本(script1.sh),当给定一堆字母时,它会找到每个可能的单词。

  • 单词必须以混乱的第一个字母开头并以最后一个字母结尾。

  • 单词的字母需要遵循混乱中的字母顺序。

  • 混乱中的每个字母都可以使用多次。

所以这

./script1.sh "qwertyuytresdftyuiokn"
Run Code Online (Sandbox Code Playgroud)

应该输出queenquestion而不是“抚慰”,因为“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)

然后我尝试将混乱变成一个数组,但又一次,我找不到在混乱中找到遵守顺序的单词的方法。

scripting bash shell-script

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