相关疑难解决方法(0)

Bash脚本迭代目录中的文件和模式匹配文件名

我需要处理目录中的大量文件.可以根据文件名将文件分区为多个组.也就是说,文件名可以是模式匹配的,它们属于"组".例如,名称是这样的:

  • YYYYMMDD _*_ bulk_import.csv
  • YYYYMMDD _*_ genstats_import.csv
  • YYYYMMDD_*allstats.csv

等......

每个"组"具有不同的处理方法(即,要求处理不同的命令).

我想写一个bash脚本:

  1. 遍历目录中的所有CSV文件
  2. 通过将其名称与已知模式匹配的模式确定文件属于哪个"组"(如上面给出的示例)
  3. 根据确定的分组调用命令.

我在Ubuntu 10.0.4上运行.我是bash的新手,并希望能够帮助我开始编写这个脚本的骨架代码片段.

bash ubuntu

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

如何在Bash中检索变量的前n个字符?

如何用Bash检索变量的前10个字符?

FOO="qwertzuiopasdfghjklyxcvbnm"
Run Code Online (Sandbox Code Playgroud)

我需要得到qwertzuiop.

bash

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

sed不在bash脚本中工作

我已经阅读了关于这个主题的所有类似问题,但没有找到与我所遇到的问题相匹配的问题.如果已经回答,我道歉.

在我写的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)

我假设我错过了一些非常明显的东西,但是我已经完成了盯着它,希望得到的答案是从屏幕上跳下来并拍打我的脸.请帮忙 :-)

蒂姆

linux bash sed

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

在 bash 变量中找到一个子字符串

我们试图找到一个 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

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

bash解析文件名

在bash中有什么方法可以解析这个文件名:

$file = dos1-20120514104538.csv.3310686

变成$date = 2012-05-14 10:45:38和变量$id = 3310686

谢谢

bash parsing tokenize

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

如何提取两个其他子字符串之间的子字符串?

我有一个逐行读取日志文件的脚本。我需要提取两个子字符串之间的文本(如果它们存在于我的脚本当前正在读取的行中)。

例如,如果一行有:

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,但找不到任何与我的用例完全匹配的内容。

bash shell substring

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

在gitlab管线中使用semver或时间戳

我正在使用GitLab管道,并在.gitlab-ci.yml文件中定义了我的构建定义。

我正在用它来构建docker容器。

简单的问题。有没有一种方法可以用gitlab中的semver或时间戳标记我的docker容器。

内置变量似乎并没有给我太多帮助。

在Windows上,我以前可以GitVersion在Powershell中使用它来获取semver标签并将其放入一个变量中,以便在其余的构建过程中使用。

如果无法执行此操作,是否可以从操作系统获取时间戳并将其用于yml文件?

semantic-versioning gitlab gitlab-ci gitlab-ci-runner

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