小编sch*_*ity的帖子

命令 | | | awk 保存到变量中或将其作为函数执行

我试图将命令的值保存到变量中,但它给出了错误

var = `cat $1 | grep "STAN: \[$2\]" | awk -F '|' '{print $3; exit}'` 
Run Code Online (Sandbox Code Playgroud)

它给了我错误

var: command not found
Run Code Online (Sandbox Code Playgroud)

grep bash vim

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

如何删除目录中所有文件中两个数字之间的下划线

所以我有一个带有嵌套文件夹的目录,并且在某些时候还有.png图像。

这些图像的命名是这样的“letters_numbers_numbers_letters.png”,我想删除数字之间的下划线。

假设我们有一个名为 的文件a_1_2_b.png,我想将其重命名为a_12_b.png. 我知道我必须使用类似的东西:

find . -name "*[0-9]_[0-9]* -type f -exec bash -c <enter_code here>`
Run Code Online (Sandbox Code Playgroud)

但我不确定如何指定如何删除这个特定的下划线。请记住,还有另外两个下划线我不想碰。

提前致谢!

bash filenames rename mv

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

用文件内容重命名文件

所以我下载了一堆文本文件,并想将这些文件重命名为包含在这些文件中的标题。

的输出head sn-800.txt是:

吉布森研究公司 https://www.GRC.com/

系列:现在安全!
剧集:#800
日期:2021 年 1 月 5 日
标题:太阳能暴雪
主持人:Steve Gibson & Leo Laporte
来源:https://media.grc.com/sn/sn-800.mp3
存档:https://www.grc.com/securitynow.htm

简而言之,sn-800.txt应该变成sn-800 - SolarBlizzard.txt

在我进入mv335 个文件之前,我在屏幕上回显所有内容:

#!/bin/bash
for iEpisode in {802..807}; 
do 
  echo -n "sn-$iEpisode - ";
  grep "^TITLE:" sn-"$iEpisode".txt | 
  cut -d":" -f2 | 
  sed 's/\t//g' | 
  tr -d '\n';  
  echo ".txt";  
done
Run Code Online (Sandbox Code Playgroud)

但似乎无法弄清楚如何删除最后的换行符(上面的`tr),因为这给了我:

.txt02 - Where the Plaintext Is
.txt03 - Comparative Smartphone Security
.txt04 - NAT …
Run Code Online (Sandbox Code Playgroud)

bash tr newlines

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

bash,如何围绕某些限制操作“ls”?

ls似乎有许多对我来说很奇怪的限制,这些限制未包含在其开关中(例如--max-depth=其他工具所具有的)。我喜欢维护通用标准(因此lsll遵循大多数普通发行版所具有的标准),但我的其他别名遵循某种易于记住的语法(lls“长列表、安全性”等)。我可以将其分成几个不同的问题,但由于这一切都与寻找通用操作方法的尝试有关ls,因此列出我的工作清单来描述我正在谈论的内容感觉更合适,因为它们都是相关的。一些具体问题:

  • 我经常听到有人说你永远不应该lsfor循环等中使用。这在默认情况下如何查看子目录等方面是有意义的ls,但是有没有一种简单的方法可以剪辑ls以从不查看子目录内部?我--max-depth=man页面中没有看到任何类似的内容,但在我看来,如果我们剪辑ls不进入子目录,那么在循环或其他结构中使用应该是可靠的for。是否有一种可靠的方法来剪辑ls为仅一个目录的输出,然后在 for 循环中使用它?

  • 我使用了我认为相当笨重的结构lld(带有目录的长列表)和llf(带有文件的长列表)。有没有更好的方式来表达“我只想查看文件”?或“我只想查看目录?”;再次, man页面中我看不到任何内容。特别是,我只能以-l格式进行此列表,否则我无法 grep 出我不想显示的项目。一般来说,我认为以这种方式使用 grep 可能是一个坏主意(因为锁定-l格式),那么有没有更好的方法来实现仅选择目录项或仅选择文件,而不是使用 grep ?

  • 如果下面的任何其他方法格式错误,我希望知道更好的方法?

尝试拥有一组标准的ls输出(每个发行版的设置通常不同)。

字符[]集通配符。例如ls name[03][17].c, 将匹配name01.c, name07.c, name31.c, name37.c, 并且[]还允许范围:ls name[07][1-9].c

请注意使用\ls来运行裸命令,忽略别名。

向条目 vs附加-F …

ls bash

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

为什么在 sudo su 之后缺少传递给 .sh 文件的参数?

我需要.sh从本地机器在我的服务器上运行文件。我可以使用以下命令来完成。

ssh -p my_port_no -i path_to_key user@ip_address "bash -s" < testOnServer.sh
Run Code Online (Sandbox Code Playgroud)

现在我需要使用上述命令传递一些参数。我按照下面的方法做了,成功了。

ssh -p my_port_no -i path_to_key user@ip_address "bash -s" < testOnServer.sh testArg1
Run Code Online (Sandbox Code Playgroud)

我的testOnServer.sh文件如下。

testArg1=$1

echo testArg1   # testArg1 can be seen here.
sudo su
echo testArg1 # testArg1 is missing here.
Run Code Online (Sandbox Code Playgroud)

命令testArg1后缺少的值sudo su

任何帮助都受到高度赞赏。

sudo parameter shell-script arguments

0
推荐指数
1
解决办法
882
查看次数

Bash 函数名称与系统二进制文件冲突

在我的脚本中,我有一个名为messages. 我在 Linux Mint 中编写它,运行它没有问题,当我将它移到 Debian Buster 工作站时,该功能与/usr/bin/messages.

我有一个调用脚本的启动脚本messages

启动脚本

# call to messages script
. messages
Run Code Online (Sandbox Code Playgroud)

消息

messages() {
  # reformat the arguments and return them
}
Run Code Online (Sandbox Code Playgroud)

稍后在 startup_script

messages "This is a message"
Run Code Online (Sandbox Code Playgroud)

哪个抛出

./startup_script: line 35: .: /usr/bin/messages: cannot execute binary file
messages: could not open mailbox `/path/to/my/script/<string passed to my function>': No such file or directory
Run Code Online (Sandbox Code Playgroud)

所以我得到了一堆与/usr/bin/messages被调用而不是我的函数相关的错误。

添加后type messages "This is a message",相关输出为:

messages is /usr/bin/messages …
Run Code Online (Sandbox Code Playgroud)

bash shell-script

0
推荐指数
1
解决办法
170
查看次数

在 UNIX 脚本中显示文件中的记录总数减 1 作为参数传递

输入按以下格式提供:

ksh -x count.sh filename `cat filepath/filename | wc -l
Run Code Online (Sandbox Code Playgroud)

这里的问题是我需要将第二个参数 cat 传递给另一个变量并执行expr -1.

我的要求是我需要计算命令本身的计数,并将其传递给脚本。

对于实际计数,记录总数应小于 1。我还需要删除标题记录。

ksh shell-script

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

sed 可移植性:扩展正则表达式与反斜杠

我们可以用两种方式编写下一个命令:

# using extended regex
$ echo foobar | sed -E 's/(foo)(bar)/\2\1/'
barfoo
Run Code Online (Sandbox Code Playgroud)

和:

# using backslashes
$ echo foobar | sed 's/\(foo\)\(bar\)/\2\1/'
barfoo
Run Code Online (Sandbox Code Playgroud)

使用反斜杠意味着该命令比扩展正则表达式更可移植?

sed posix regular-expression portability

0
推荐指数
1
解决办法
649
查看次数

与linux匹配的相对日志文件?

我已经知道如何使用grepawk匹配日志文件中的某些内容,但是有没有办法执行以下操作?

  1. 匹配文件中的特定行...并将其包含在结果中。
  2. 从文件中 (1.) 的匹配行开始,直到匹配第二个字符串为止,并将它以及结果中的所有行包含在内。
  3. 然后从第三个匹配项开始从匹配项 (1.) 开始搜索,匹配第三个字符串并将其包括在结果中的所有行之间。

这样,如果正在搜索的内容是在 BEGINNING 和 END 的上下文中,您可以只搜索您正在搜索的内容发生的上下文。日志文件如下所示:

<several-1000-lines>
...[BEGINX]
some log a
<several-1000-lines>
...[First-string-i-search-for]
<several-1000-lines>
some log b
...[ENDX]
<several-1000-lines>
Run Code Online (Sandbox Code Playgroud)

然后我会在搜索后得到这样的输出[First-string-i-search-for]

...[BEGINX]
some log a
<several-1000-lines>
...[First-string-i-search-for]
<several-1000-lines>
some log b
...[ENDX]
Run Code Online (Sandbox Code Playgroud)

grep vim logs awk

0
推荐指数
1
解决办法
72
查看次数

带有在 else 中不响应的命令的条件“if”

我有以下命令行,它应该返回值1,以防万一,通过nc检查与相关 IP 和端口的通信:

/bin/nc -z 10.102.10.22 10003 > /dev/null && if [ $? -eq 0 ]; then echo 1; else echo 0; fi
Run Code Online (Sandbox Code Playgroud)

结果令人满意,我得到了价值1。但是当没有与端口或 IP 通信时,命令会“等待”,不会获得任何形式的价值。

在经过特定时间(例如 10 秒)后返回值0else语句)的正确方法是什么。

该命令的结果每隔很短的时间就会被监视以绘制通信图,因此知道什么时候会很有趣0

shell bash nc

0
推荐指数
2
解决办法
64
查看次数

awk 命令用特定值替换子字符串

我有一个平面文件,其中的字段中包含从位置 314 到 323 的电话号码。现在我想用 来虚拟该字段1234567890

为此,我尝试使用以下命令,但都抛出错误:

awk '{var=substr($0,314,10);gsub("[0-9]","1234567890",$var); print}' final_phone.txt >final_phone.txt1
Run Code Online (Sandbox Code Playgroud)

致命:grow_fields_arr:fields_arr:无法分配9849885432字节内存(无法分配内存)

第二种情况

awk 'var=substr($0,314,10) { var = "1234567890" }1' final_phone.txt >final_phone.txt1
Run Code Online (Sandbox Code Playgroud)

这有效,但值没有改变。输出保持不变。

有人可以帮我解决这里的语法吗?

在第一种情况下,我尝试将子字符串分配给变量,并且gsub()我想检查数字模式并替换为1234567890.

有人可以帮我弄这个吗

awk

0
推荐指数
1
解决办法
2625
查看次数

标签 统计

bash ×6

shell-script ×3

awk ×2

grep ×2

vim ×2

arguments ×1

filenames ×1

ksh ×1

logs ×1

ls ×1

mv ×1

nc ×1

newlines ×1

parameter ×1

portability ×1

posix ×1

regular-expression ×1

rename ×1

sed ×1

shell ×1

sudo ×1

tr ×1