使用bash ...2个模式之间的提取线
我希望遍历每个'_Brkt'发生的变量列表;
echo "$BrackListAllFinal"
DSCF3649-DSCF3651_Brkt
DSCF3649.JPG 2014-07-21 13:34:44 On 1
DSCF3649.RAF 2014-07-21 13:34:44 On 1
DSCF3650.JPG 2014-07-21 13:34:45 On 2
DSCF3650.RAF 2014-07-21 13:34:45 On 2
DSCF3651.JPG 2014-07-21 13:34:45 On 3
DSCF3651.RAF 2014-07-21 13:34:45 On 3
DSCF3652-DSCF3654_Brkt
DSCF3652.JPG 2014-07-21 13:38:24 On 1
DSCF3652.RAF 2014-07-21 13:38:24 On 1
DSCF3653.JPG 2014-07-21 13:38:24 On 2
DSCF3653.RAF 2014-07-21 13:38:24 On 2
DSCF3654.JPG 2014-07-21 13:38:25 On 3
DSCF3654.RAF 2014-07-21 13:38:25 On 3
我想显示的文件名在“_Brkt”结尾的行每一次出现的以下并在下一次出现停止 ,如果存在。我将以'_Brkt'结尾的每一行创建一个新目录,并将它后面的顺序文件移动到新目录中。
我试过了;
echo "$BrackListAllFinal" | awk '{print $1}' | awk '/.*\..*/, /_Brkt$/'
......还有......
echo "$BrackListAllFinal" | awk '{print $1}' | sed -n '/_Brkt$/,/_Brkt$/p
例如...
创建在 '_Brkt'
DSCF3649结束每行一个新的目录-DSCF3651_Brkt
将顺序文件名移动到新目录中。
- DSCF3649.JPG
- DSCF3649.RAF
- DSCF3650.JPG
- DSCF3650.RAF
- DSCF3651.JPG
- DSCF3651.RAF
我可以在行结束后不会显示行'_Brkt'。 我有点失落,有人可以帮忙。
谢谢。
很多感谢您的回答。我很难将这一点融入到迄今为止我所做的事情中。您能否告诉我如何使用sed或awk来执行选择。谢谢。 – voiczed 2014-10-02 01:47:40
@voiczed这是不可能的:你有状态从一行传播到下一行 – 2014-10-02 10:08:53