我需要处理目录中的大量文件.可以根据文件名将文件分区为多个组.也就是说,文件名可以是模式匹配的,它们属于"组".例如,名称是这样的:
等......
每个"组"具有不同的处理方法(即,要求处理不同的命令).
我想写一个bash脚本:
我在Ubuntu 10.0.4上运行.我是bash的新手,并希望能够帮助我开始编写这个脚本的骨架代码片段.
如何用Bash检索变量的前10个字符?
FOO="qwertzuiopasdfghjklyxcvbnm"
Run Code Online (Sandbox Code Playgroud)
我需要得到qwertzuiop.
我已经阅读了关于这个主题的所有类似问题,但没有找到与我所遇到的问题相匹配的问题.如果已经回答,我道歉.
在我写的bash脚本中,有一个非常简单的sed命令,它似乎不起作用.没有错误,从命令行运行时命令工作正常.
在set -x的输出中,我可以看到sed命令完美地执行.
GNU bash,版本4.3.11(1)-release(x86_64-pc-linux-gnu)
Bash脚本:(为了更容易理解而降低音量)
#!/bin/bash -x
# This script has the exact same sed command as used on cli
contact='"tim@email.com"'
sed -i "/$contact/d" /home/tim/Desktop/file.txt
exit
Run Code Online (Sandbox Code Playgroud)
壳牌产量:
tim@ubuntu:~/Desktop$ cat file.txt
t,b,tim@email.com
tim@ubuntu:~/Desktop$ ./test.sh
+ contact='"tim@email.com"'
+ sed -i '/"tim@email.com"/d' /home/tim/Desktop/file.txt
+ exit
tim@ubuntu:~/Desktop$ cat file.txt
t,b,tim@email.com
tim@ubuntu:~/Desktop$ sed -i "/"tim@email.com"/d" /home/tim/Desktop/file.txt
tim@ubuntu:~/Desktop$ cat file.txt
tim@ubuntu:~/Desktop$
Run Code Online (Sandbox Code Playgroud)
我假设我错过了一些非常明显的东西,但是我已经完成了盯着它,希望得到的答案是从屏幕上跳下来并拍打我的脸.请帮忙 :-)
蒂姆
我们试图找到一个 mercurial url 的用户名:
default = ssh://someone@acme.com//srv/hg/repo
Run Code Online (Sandbox Code Playgroud)
假设总是有一个用户名,我想出了:
tmp=${a#*//}
user=${tmp%%@*}
Run Code Online (Sandbox Code Playgroud)
有没有办法在一行中做到这一点?
在bash中有什么方法可以解析这个文件名:
$file = dos1-20120514104538.csv.3310686
变成$date = 2012-05-14 10:45:38和变量$id = 3310686?
谢谢
我有一个逐行读取日志文件的脚本。我需要提取两个子字符串之间的文本(如果它们存在于我的脚本当前正在读取的行中)。
例如,如果一行有:
some random text here substring A abc/def/ghi substring B
Run Code Online (Sandbox Code Playgroud)
我需要通过将其存储在变量中来提取和abc/def/ghi之间的文本。我该怎么做呢?substring Asubstring B
我查看了Bash 中的 Extract substring,但找不到任何与我的用例完全匹配的内容。
我正在使用GitLab管道,并在.gitlab-ci.yml文件中定义了我的构建定义。
我正在用它来构建docker容器。
简单的问题。有没有一种方法可以用gitlab中的semver或时间戳标记我的docker容器。
内置变量似乎并没有给我太多帮助。
在Windows上,我以前可以GitVersion在Powershell中使用它来获取semver标签并将其放入一个变量中,以便在其余的构建过程中使用。
如果无法执行此操作,是否可以从操作系统获取时间戳并将其用于yml文件?