【问题标题】:how can i use regex to get a certain string of a file我如何使用正则表达式来获取文件的某个字符串
【发布时间】:2010-04-20 09:26:22
【问题描述】:

使用 linux bash shell,我如何使用正则表达式来获取文件的某个字符串

举例:

对于文件名 *.tgz 做

“获取文件名的特定字符串(在我的情况下,获取文件2010.01.12myfile.tgz的2010.04.12)”

完成

或者我应该转向 perl

谢谢

坦率

【问题讨论】:

  • 获取 2010.01.12 还是 2010.04.12 ?

标签: linux bash


【解决方案1】:
FILE=2010.01.12myfile.tgz

echo ${FILE:0:10}

给予

2010.01.12

【讨论】:

  • 我猜他需要 d=${FILE:0:10}
  • 这就是我昨天终于做的,但还是谢谢大家~~
【解决方案2】:

使用 bash,对于最简单的情况,如果您知道要获取的是日期戳,则可以使用 shell 扩展

#!/bin/bash

for file in 20[0-9][0-9].[01][0-9].[0-9][0-9]*tgz
do
 echo $file
done

否则,如果它在第一个字母之前,

for file in *tgz
do
 echo ${file%%[a-zA-Z]*}
done

否则,您应该说明您的搜索条件。

【讨论】:

  • 抱歉我的表达不好,我的意思是获取我想要的字符串而不是文件。外壳是这样的:对于文件名 *.tgz do #get 特定的文件名字符串(在我的情况下,获取文件 2010.01.12myfile.tgz 的 2010.04.12)完成
【解决方案3】:
#!/bin/sh
a="2010.04.18Myfile.tgz"
echo ${a%%+([a-zA-Z.])}

bash' 正则表达式非常强大(至少与标准的 sh 或 command.com 相比 :-))

【讨论】:

  • 嗨,无法完成我只想将 '2010.04.18' 签名到变量
  • 你可以像上面的例子一样说 b=${a%%...}
  • 您需要将 shebang 设置为 #!/bin/bash 并拥有 shopt extglob 才能使用 +(...)
猜你喜欢
  • 2014-08-06
  • 1970-01-01
  • 1970-01-01
  • 2015-07-15
  • 2019-08-06
  • 2012-01-06
  • 1970-01-01
  • 1970-01-01
  • 2015-05-21
相关资源
最近更新 更多