我有一组数据作为输入,需要基于deleimiter的倒数第二个字段.这些行可能具有不同数量的分隔符.我怎样才能获得倒数第二场?
示例输入
text,blah,blaah,foo
this,is,another,text,line
Run Code Online (Sandbox Code Playgroud)
预期产出
blaah
text
Run Code Online (Sandbox Code Playgroud) 所以我有一个非常简单的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中发现的非法字符"错误?
更新 我跑了这个: …
我有一个约400mb的电子邮件转储.我想将其拆分为.txt文件,每个文件中包含一封邮件.每封电子邮件都以指定doctype的标准HTML标头开头.
这意味着我将不得不根据上述标题拆分我的文件.我如何在linux中进行操作?
我有一个包含一定数量行的文件.每一行看起来像这样:
TF_list_to_test10004/Nus_k0.345_t0.1_e0.1.adj:PKMYT1
Run Code Online (Sandbox Code Playgroud)
我想删除所有":"之前的字符,以便仅保留作为基因名称的PKMYT1.由于我不是正则表达式脚本编写的专家,任何人都可以帮助我使用Unix(sed或awk)或R?
我是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个字符的空间.
任何帮助表示赞赏.
我想在文件中搜索一个模式,并在找到该模式后打印5行.
我需要使用awk才能做到这一点.
例:
文件内容:
.
.
.
.
####PATTERN#######
#Line1
#Line2
#Line3
#Line4
#Line5
.
.
.
Run Code Online (Sandbox Code Playgroud)
如何解析文件并仅打印上述行?我是否使用包含"PATTERN"的行的NR并继续增加到5并在此过程中打印每一行.如果在Awk中有任何其他有效的扫描仪,请告诉我.
如果输入文件每行包含一个单独的数字,我怎样才能计算该文件中项目发生的次数?
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脚本中的文本文件中间添加一行文本.具体来说,我正在尝试将名称服务器添加到我的/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重新创建文件是我最好的举动?