小编Ini*_*ian的帖子

使用xmllint获取pom.xml版本

我有一个pom.xml这样的

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.qualtrics.sujitv</groupId>
  <artifactId>maven-test</artifactId>
  <packaging>jar</packaging>
  <version>1.2.3.4</version>
  <name>Test app</name>
  <url>http://maven.apache.org</url>

</project>
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用xmllint获取版本,但是当我运行时

xmllint --xpath 'string(project/version)' ./pom.xml
Run Code Online (Sandbox Code Playgroud)

它什么也没输出

bash xpath xmllint

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

在使用 sudo bash 运行的脚本中运行没有 sudo 的特定命令

我有一个bash正在运行的脚本sudosudo NewScript

在脚本中,我有一个git不想运行的命令sudo。目前,由于整个脚本是用sudo这个命令运行sudo的,所以我想抑制它。

这样的事情是可能的还是我需要在没有命令的情况下运行脚本sudosudo为除git命令之外的脚本中的每个命令添加?

git bash shell ubuntu sudo

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

macOS High Sierra上的参数替换错误替换错误

${parameter[^|^^|,|,,][pattern]}参数替代是给我一个坏的替代误差.

$ echo $greeting
hello world
$ echo "${greeting^}."
-bash: ${greeting^}.: bad substitution
Run Code Online (Sandbox Code Playgroud)

我更新到最新bash版本并继续收到错误.

GNU bash, version 4.4.19(1)-release (x86_64-apple-darwin17.3.0)
Run Code Online (Sandbox Code Playgroud)

我到处寻找,我发现的唯一建议是确保它正在运行bash4.

$ echo $SHELL
/bin/bash
Run Code Online (Sandbox Code Playgroud)

我正在运行macOS High Sierra.

macos bash

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

如何使用bash删除“”之间的空白空间

这种格式的txt

"service blabla 1"                   5.456
"service blabla 2"                   456
Run Code Online (Sandbox Code Playgroud)

我只需要删除“”之间的空白空间

"serviceblabla1"                   5.456
"serviceblabla2"                   456
Run Code Online (Sandbox Code Playgroud)

我有这个命令

sed 's/ //g'

结果:

"serviceblabla2"456
Run Code Online (Sandbox Code Playgroud)

regex awk sed

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

用包含空格的字符串替换空格和反斜杠行

我想替换以下行:

--memory 20g \
Run Code Online (Sandbox Code Playgroud)

--memory 100g \
Run Code Online (Sandbox Code Playgroud)

实际上它应该替换之后的任何数字--memory.以下是我所拥有的,但无法获得预期的结果.

sed -i -E -- "s/\b--memory.*/--memroy 100g \/g"  a.txt
Run Code Online (Sandbox Code Playgroud)

unix linux sed

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

如果一行和下一行以相同的模式开始,如何不打印一行?

我有一个 file.fa:

>ABC
TGTGTGT
AGAGAGA
TGTAGTA
>BDC
>DTR
>EDF
AGAGGTG
AGTGACA
CAGTGAC
Run Code Online (Sandbox Code Playgroud)

我想保留没有 ">" 的行,只有在紧随其后的行没有 ">" 时才保留带有 ">" 的行:

>ABC
TGTGTGT
AGAGAGA
TGTAGTA
>EDF
AGAGGTG
AGTGACA
CAGTGAC
Run Code Online (Sandbox Code Playgroud)

查看这篇文章的答案,我看到awk '/^>/{x=$0} !/^>/{if(x){print x;x=0;}}' file.fa打印出我想要的标题行(带有“>”):

>ABC
>EDF
Run Code Online (Sandbox Code Playgroud)

但是我如何获得没有“>”的文本行?

regex awk sed

8
推荐指数
3
解决办法
125
查看次数

使用 grep 仅打印上下文

使用grep,您可以打印与您的搜索查询匹配的行。添加一个-C选项将打印两行周围的上下文,如下所示:

> grep -C 2 'lorem'
some context
some other context
**lorem ipsum**
another line
yet another line
Run Code Online (Sandbox Code Playgroud)

同样,您可以使用grep -B 2grep -A 2分别打印前两行或后两行的匹配行,例如:

> grep -A 2 'lorem'
**lorem ipsum**
another line
yet another line
Run Code Online (Sandbox Code Playgroud)

是否可以跳过匹配的行并只打印上下文?具体来说,我只想打印匹配项上方 2 行的行,如下所示:

> <some magic command>
some context
Run Code Online (Sandbox Code Playgroud)

bash shell awk grep

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

由kinesis引发的跨帐户lambda触发器

我试图通过帐户'A'中的Kinesis流在帐号'B'中触发lambda.这类似于此处描述的内容,除了示例使用S3而不是Kinesis.

为此,我正在尝试设置正确的权限,但遇到了困难.

首先我添加此权限:

  aws lambda add-permission \
--function-name "$function_name" \
--statement-id 'Id-123' \
--action "lambda:InvokeFunction" \
--principal $source_account \
--source-arn "$stream_arn" \
--source-account $source_account \
--region us-east-1 \
--profile "$profile"
Run Code Online (Sandbox Code Playgroud)

$source_account"A"的帐户ID 在哪里.

然后我尝试创建源映射:

 aws lambda create-event-source-mapping \
    --event-source-arn "$stream_arn" \
    --function-name "$function_name" \
    --starting-position TRIM_HORIZON \
    --region us-east-1 \
    --profile "$profile"
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

调用CreateEventSourceMapping操作时发生客户端错误(InvalidParameterValueException):角色和事件源必须与云功能位于同一帐户中

我不明白这个错误.它说我想做的事是不可能的吗?但是,在这里如何通过S3 完成,这基本上是相同的机制?

amazon-web-services amazon-kinesis aws-lambda

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

在 bash 中解析和存储 curl 命令的 json 输出

我有五个cURL单独运行良好的语句,并试图将它们放在一个 bash 脚本中。每个cURL语句都依赖于从cuRL在它之前执行的语句生成的变量。我正在尝试找出解决此问题的最明智的方法。这是第一个 cURL 语句;

curl -i -k -b sessionid -X POST https://base/resource -H "Content-Type: application/json" -H "Authorization: Authorization: PS-Auth key=keyString; runas=userName; pwd=[password]" -d "{\"AssetName\":\"apiTest\",\"DnsName\":\"apiTest\",\"DomainName\":\"domainNameString\",\"IPAddress\":\"ipAddressHere\",\"AssetType\":\"apiTest\"}"
Run Code Online (Sandbox Code Playgroud)

这工作正常,它产生这个输出;

{"WorkgroupID":1,"AssetID":57,"AssetName":"apiTest","AssetType":"apiTest","DnsName":"apiTest","DomainName":"domainNameString","IPAddress":"ipAddressHere","MacAddress":null,"OperatingSystem":null,"LastUpdateDate":"2017-10-30T15:18:05.67-07:00"}
Run Code Online (Sandbox Code Playgroud)

但是,在下一个cURL语句中,我需要使用整数 fromAssetID才能执行它。简而言之,如何获取AssetID值并将其存储到变量中以在下一个语句中使用?总共,我将使用 5 个cURL语句,它们依赖于在前面的语句中生成的值来执行。任何有关如何的见解都值得赞赏。

bash curl jq

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

为什么我们在某些shell命令中执行'</ dev/null'

shell构造最近困惑了我,之间的区别是什么

while ! nc -z $HOST $PORT >/dev/null 2>&1 < /dev/null; do 
Run Code Online (Sandbox Code Playgroud)

while ! nc -z $HOST $PORT >/dev/null 2>&1 ; do
Run Code Online (Sandbox Code Playgroud)

bash shell

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

标签 统计

bash ×6

awk ×3

sed ×3

shell ×3

regex ×2

amazon-kinesis ×1

amazon-web-services ×1

aws-lambda ×1

curl ×1

git ×1

grep ×1

jq ×1

linux ×1

macos ×1

sudo ×1

ubuntu ×1

unix ×1

xmllint ×1

xpath ×1