小编agc*_*agc的帖子

Grep有两个有序字符串(如正则表达式中的逻辑AND)

我试图用两个字符串grep文件的行,所以string1 logical_ AND string2.

示例行grep:

The quick brown fox and the cat
Run Code Online (Sandbox Code Playgroud)

我希望grep通过匹配"快速""猫"来排除那一行,注意"the""cat"之间的空格.这就是让我失望的原因.

grep .*quick.*cat myfile
Run Code Online (Sandbox Code Playgroud)

这工作正常,但我想grep "猫"和;

grep .*quick.*the cat myfile
Run Code Online (Sandbox Code Playgroud)

显然由于空间不起作用.我不明白我怎么能用空间包围"猫"

regex grep

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

bash:从管道中分配变量?

bash,使用管道输入分配变量的最有效方法是什么 - 仅使用从左到右的语法?假设管道的左侧是seq 3,所以我们想要:

seq 3 | x=<put some code here>
Run Code Online (Sandbox Code Playgroud)

注意:虽然功能上可能相同,但不是答案:

x=`seq 3`
Run Code Online (Sandbox Code Playgroud)

...因为seq 3不在管道的左侧.

对于这个Q,请忽略超出变量内存的可能性,管道当然可以做到.

bash

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

在 package.json 中使用 sed 的凹凸版本

我需要在jenkins 中自动生成package.json,并且真的坚持了下来。

以下sed命令在管道中工作,但它更改了第二个字段,我需要更改第三个字段:

sed -i  "/version/s/\\([.]\\)\\(.\\)\\(.*\\)/\\1${BUILD_NUMBER}\\3/" package.json
Run Code Online (Sandbox Code Playgroud)

输出:

"version": "0.222.0"
Run Code Online (Sandbox Code Playgroud)

但是我需要:

"version": "0.0.222"
Run Code Online (Sandbox Code Playgroud)

json输入的一部分:

{
 "name": "render",
  "version": "0.0.0"
  "description": "",
 "main": "./dist/index.js",
   "bin": {
"render-ne": "./bin/re"
  },
Run Code Online (Sandbox Code Playgroud)

谁能提供帮助?

json sed

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

在 bash 正则表达式中匹配 N 个模式

我知道我可以做以下事情:

[[ $s =~ ^(re)(re)$ ]]
Run Code Online (Sandbox Code Playgroud)

BASH_REMATCH用一系列括号表达式匹配来填充数组。但是有可能匹配未知数量的这些匹配项吗?例如,我得到以下信息:

s='abc defghi     jklm    nop '
[[ $s =~ ^([^ ]+ +)+$ ]]
declare -p BASH_REMATCH
Run Code Online (Sandbox Code Playgroud)

输出:

declare -ar BASH_REMATCH=([0]="abc defghi     jklm    nop " [1]="nop ")
Run Code Online (Sandbox Code Playgroud)

我认为BASH_REMATCH[1]每次匹配时都会重写括号表达式。

我真正想看到的是:

declare -ar BASH_REMATCH=([0]="abc defghi     jklm    nop " 
                          [1]="abc " 
                          [2]="defghi     " 
                          [3]="jklm    " 
                          [4]="nop ")
Run Code Online (Sandbox Code Playgroud)

这可以在单个命令中实现吗?

bash

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

如何使用 bash 脚本运行 sftp 子命令?

我正在尝试使用家庭网络中的 SFTP 协议将文件发送到手机。虽然我可以使用 FTP 中的命令轻松地将文件发送到我的手机put,但我想自动执行该任务。所以我写了这个脚本:

#! /bin/bash
#Capture and share screenshot to my phone
gnome-screenshot
cd /home/prm/Pictures
FILE="$(ls -Art | tail -n 1)" #To get the last created file
sftp sftp://192.168.1.2:1753/primary/DCIM/Screenshots
put /home/prm/Pictures/$FILE
Run Code Online (Sandbox Code Playgroud)

我能够连接到我的手机和所需的目录,但我不知道如何上传。请帮忙!

将代码更新为:

#! /bin/bash
#Capture and share screenshot to my phone
gnome-screenshot
cd /home/prm/Pictures
FILE="$(ls -Art | tail -n 1)" #To get the last created file
echo $FILE
sftp sftp://192.168.1.3:1761/primary/DCIM/Screenshots -b <<<"put /home/prm/Pictures/$FILE"
Run Code Online (Sandbox Code Playgroud)

我得到以下输出:

prm@prm-2018-02:~/Documents/Anubhav/Bash$ ./capture.sh
Screenshot from 2020-06-04 22-38-27.png
Connected to 192.168.1.3.
Fetching /primary/DCIM/Screenshots/ …
Run Code Online (Sandbox Code Playgroud)

bash shell sftp

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

sed更改丢失(在txt文件上运行cat命令时)

我需要在第4行的test.txt文件中插入一个命令"new file" .

尝试sed; 我可以看到更改的文件输出,但是当我再次这样做时cat test.txt,更改就消失了.

sed "4i new file" /test.txt
Run Code Online (Sandbox Code Playgroud)

如何保存更改?

linux sed

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

如何在Linux shell脚本中将内容打印到最右边的控制台

假设我想在一堆日志文件中搜索"ERROR".

我想为包含"ERROR"的每个文件打印一行.

在每一行中,我想打印最左边的日志文件路径,而最右边的"ERROR"数.

我试过用:

printf "%-50s %d" $filePath $errorNumber
Run Code Online (Sandbox Code Playgroud)

...但它并不完美,因为黑色控制台可能会有很大差异,文件路径有时可能会很长.

只是为了眼睛的快乐,但我根本无法这样做.任何人都可以帮我解决这个问题吗?

linux format shell

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

如何用sed将数组分成多行

我有这样的txt数据:

A B [C,D,E] [F,G]
Run Code Online (Sandbox Code Playgroud)

想要输出结果为:

A B C F \n
A B C G \n
A B D F \n
A B D G \n
A B E F \n
A B E G \n
Run Code Online (Sandbox Code Playgroud)

如何使用sed命令执行此操作?

shell sed

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

bash 脚本编辑目录中的所有文件

尝试编辑聊天目录中的所有日志文件以替换给定值之后的下一行中找到的字符串值。

下面的代码有效:

sed '/Did cool stuff/{n;s/how cool/sweet as bru/g} logname.log
Run Code Online (Sandbox Code Playgroud)

但是当尝试执行时bash它永远不会完成,只是挂起:

#!home/bin/bash
for file in /home/logs/*.log ; do
    sed '/Did cool stuff/{n;s/how cool/sweet as bru/g}' ;
done
Run Code Online (Sandbox Code Playgroud)

感觉我错过了一些明显的东西。

linux bash loops sed

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

在 JSON 字符串中查找值

我有一个存储到文本文件(或变量)的字符串,看起来像这样,我只需要将“ItemsQueued”中的值存储在另一个变量中。请注意,所有项目在此字符串中出现两次,我需要这两个项目值。

[{"Description":"blablabla","RemoteServerID":"982734298437234","DisplayClass":101,"ActiveWorkers":0,"TotalWorkers":1,"State":13,"ItemsQueued":0,"BytesQueued":0,"LastWorkerSubmitTime":1592553946,"CurrentTime":1592554151,"ItemsReplicated":456,"BytesReplicated":188588980},{"Description":"blablabla","RemoteServerID":"982734298437234","DisplayClass":100,"ActiveWorkers":0,"TotalWorkers":6,"State":13,"ItemsQueued":0,"BytesQueued":0,"LastWorkerSubmitTime":1592553615,"CurrentTime":1592554151,"ItemsReplicated":403459,"BytesReplicated":1061944812437}]
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?我不是开发人员,sed我发现的所有示例都不适合我的用例。

bash json sed jq

-1
推荐指数
1
解决办法
55
查看次数

标签 统计

bash ×5

sed ×5

linux ×3

shell ×3

json ×2

format ×1

grep ×1

jq ×1

loops ×1

regex ×1

sftp ×1