标签: awk

如何从剪切命令获取倒数第二个字段

我有一组数据作为输入,需要基于deleimiter的倒数第二个字段.这些行可能具有不同数量的分隔符.我怎样才能获得倒数第二场?

示例输入

text,blah,blaah,foo
this,is,another,text,line
Run Code Online (Sandbox Code Playgroud)

预期产出

blaah
text
Run Code Online (Sandbox Code Playgroud)

unix awk cut

43
推荐指数
3
解决办法
6万
查看次数

在bash脚本中使用curl并获取curl:(3)在URL中找到非法字符

所以我有一个非常简单的bash脚本,它正在向一个auth服务器发送标题.标题url被写入var,然后在下一个curl调用中使用.当在第一个curl调用中使用var set时,我得到"curl:(3)在URL中找到非法字符".我能够回显var并且所有看起来都很好,我甚至可以重置var(在我下面的示例中)并且它可以工作.

Bash脚本

URL=$(curl -i -X GET -H "X-Auth-User: MyUserna,e" -H "X-Auth-Key: MyAPIKey" "https://urlToAuthServer.tld/auth/v1.0/" | grep "X-Storage-Url:" | awk '{print $2}')

curl -X GET -H "X-Auth-Token: MyAuthTok" "${URL}/folder/myfile.txt" -o ./myfile.txt
Run Code Online (Sandbox Code Playgroud)

运行上面的例子时,我得到:

curl: (3) Illegal characters found in URL
Run Code Online (Sandbox Code Playgroud)

URL var看起来像这样(没有非法字符)

https://somesecureurl.com/auth/AUTH_67383834-45245453-g34g34t5-34534
Run Code Online (Sandbox Code Playgroud)

当我在终端中这样做时它起作用:

$ URL = $(卷曲-i -X GET -H "X-AUTH-用户:MyUserna,E" -H "X-验证密钥:MyAPIKey"" HTTPS://urlToAuthServer.tld/auth/v1.0/ "| grep"X-Storage-Url:"| awk'{print $ 2}')

$ echo $ URL

https://somesecureurl.com/auth/AUTH_67383834-45245453-g34g34t5-34534

现在我复制并粘贴字符串并将其重新分配到URL,如此(再次在终端中):

>$ URL="https://somesecureurl.com/auth/AUTH_67383834-45245453-g34g34t5-34534"
>$ curl -X GET -H "X-Auth-Token: MyAuthTok" "${URL}/folder/myfile.txt" -o ./myfile.txt
Run Code Online (Sandbox Code Playgroud)

有用.

那么为什么我在第一个例子中得到"curl:(3)在URL中发现的非法字符"错误?

更新 我跑了这个: …

linux bash awk curl

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

根据内容拆分linux中的文件

我有一个约400mb的电子邮件转储.我想将其拆分为.txt文件,每个文件中包含一封邮件.每封电子邮件都以指定doctype的标准HTML标头开头.

这意味着我将不得不根据上述标题拆分我的文件.我如何在linux中进行操作?

linux bash awk sed file

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

删除冒号前的所有文本

我有一个包含一定数量行的文件.每一行看起来像这样:

TF_list_to_test10004/Nus_k0.345_t0.1_e0.1.adj:PKMYT1
Run Code Online (Sandbox Code Playgroud)

我想删除所有":"之前的字符,以便仅保留作为基因名称的PKMYT1.由于我不是正则表达式脚本编写的专家,任何人都可以帮助我使用Unix(sed或awk)或R?

unix awk replace r sed

42
推荐指数
7
解决办法
6万
查看次数

多个字符串,截断行为80个字符

我是awk和sed的新手,我正在寻找一种截断80行字符的方法,但是我使用printf在该行中打印了几个字符串.最后两个字符串是那些给我带来问题的字符串,因为它们在我的代码的每次迭代中都有不同的大小.这是我目前的代码:

printf "%5d  %3s%.2s %4s %s %s \n" "$f" "$month" "$day" "$year" "$from" "$subject"
Run Code Online (Sandbox Code Playgroud)

此代码用于创建通过Bash脚本传递的电子邮件的摘要.我所知道的是,对于我的其他字符串的空格和要求,我在$ from和$ subject字符串之间有60个字符的空间.

任何帮助表示赞赏.

string bash awk

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

41
推荐指数
5
解决办法
7万
查看次数

如何使用awk在文件中的模式后打印5个连续行

我想在文件中搜索一个模式,并在找到该模式后打印5行.

我需要使用awk才能做到这一点.

例:

文件内容:

.
.
.
.
####PATTERN#######
#Line1
#Line2
#Line3
#Line4
#Line5
.
.
.
Run Code Online (Sandbox Code Playgroud)

如何解析文件并仅打印上述行?我是否使用包含"PATTERN"的行的NR并继续增加到5并在此过程中打印每一行.如果在Awk中有任何其他有效的扫描仪,请告诉我.

unix shell awk

41
推荐指数
5
解决办法
8万
查看次数

从文件生成直方图

如果输入文件每行包含一个单独的数字,我怎样才能计算该文件中项目发生的次数?

cat input.txt
1
2
1
3
1
0
Run Code Online (Sandbox Code Playgroud)

期望的输出(=> [1,3,1,1]):

cat output.txt
0 1
1 3
2 1
3 1
Run Code Online (Sandbox Code Playgroud)

如果解决方案也可以扩展为浮动数字,那将会很棒.

bash shell awk file

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

如何使用bash在文件中间添加一行文本?

我正在尝试在bash脚本中的文本文件中间添加一行文本.具体来说,我正在尝试将名称服务器添加到我的/etc/resolv.conf文件中.就目前而言,resolv.conf看起来像这样:

# Generated by NetworkManager
domain dhcp.example.com
search dhcp.example.com
nameserver 10.0.0.1
nameserver 10.0.0.2
nameserver 10.0.0.3
Run Code Online (Sandbox Code Playgroud)

我的目标是添加nameserver 127.0.0.1上面所有其他名称服务器行,但低于上面的任何文本.最后我想将我的resolve.conf文件看起来像这样:

# Generated by NetworkManager
domain dhcp.example.com
search dhcp.example.com
nameserver 127.0.0.1
nameserver 10.0.0.1
nameserver 10.0.0.2
nameserver 10.0.0.3
Run Code Online (Sandbox Code Playgroud)

这怎么可能通过bash脚本?这是sed还是awk可以做的事情?或者创造性的greping重新创建文件是我最好的举动?

linux bash awk grep sed

41
推荐指数
3
解决办法
4万
查看次数

使用awk调用可执行程序

我有一个C程序,我想在shell脚本中使用awk调用.我怎么能这样做?

shell awk

41
推荐指数
5
解决办法
10万
查看次数

标签 统计

awk ×10

bash ×5

shell ×4

linux ×3

sed ×3

unix ×3

file ×2

curl ×1

cut ×1

grep ×1

r ×1

replace ×1

string ×1