2016-02-09 88 views
0
//unit-translator 

#head 
< 

shell: /bin/bash; 

> 

#stuffs 
< 

[~]: ~; 
[binary's]: /bin/bash; 
[run-as-root]: sudo; 


> 

#commands 
< 

make-directory:mkdir; 
move-to-directory:cd; 
url-download-current-dirrectory:wget; 
extract-here-tar:tar; 
copy:cp; 
remove-directory-+files:rm -R; 
enter-root:su; 

> 

我想“#commands”后,一切隔离,2“<”,“>”的之间的字符串。我如何去做这件事?隔离的文本文件的某些部分与shell脚本

我使整个并祝字符串

translator=$(<config.txt) 

我想iscolate在命令部分的一切,并将其存储为“命令翻译”的变量。

从这一点来说我打算分割的每一行,每一组的命令是这样的:

IFS=';' read -a translatorcommandlines <<< "$translatorcommands" 
IFS=':' read -a translatorcommand <<< "$translatorcommandlines" 

我太笨,请帮帮我!

+3

请编辑您Q可显示您预期的输出给您的样本数据。祝你好运。 – shellter

+1

请同时尝试更好地解释你的意思*隔离* –

+1

一个简短的'awk'脚本可以做到这一点,但首先你必须研究'awk'。 – chepner

回答

2

如果你的意思是提取所有行<>之间#command后,你可以用这个命令去:

sed '0,/^#command/d' config.txt | sed '/>/q' | grep "^\w" 

其跳过#command之前的所有行,打印行,直到>,只需要那些刚开始用字字符。

我为您的文件输出为:

make-directory:mkdir; 
move-to-directory:cd; 
url-download-current-dirrectory:wget; 
extract-here-tar:tar; 
copy:cp; 
remove-directory-+files:rm -R; 
enter-root:su; 
1

用于UNIX的通用文本处理工具是 “AWK”。你不会在你的问题告诉你希望你的输出是如此IDK的你想要的是什么,但希望这是足以让你从这里弄明白:

$ cat tst.awk 
BEGIN { RS=">"; FS="\n" } 
{ gsub(/^.*<[[:blank:]]*\n|\n[[:blank:]]*$/,"") } 
NF { 
    for (i=1;i<=NF;i++) { 
     print "record", NR, "field", i, "= [" $i "]" 
    } 
    print "----" 
} 

$ awk -f tst.awk file 
record 1 field 1 = [] 
record 1 field 2 = [shell: /bin/bash;] 
record 1 field 3 = [] 
---- 
record 2 field 1 = [] 
record 2 field 2 = [[~]: ~;] 
record 2 field 3 = [[binary's]: /bin/bash;] 
record 2 field 4 = [[run-as-root]: sudo;] 
record 2 field 5 = [] 
record 2 field 6 = [] 
---- 
record 3 field 1 = [] 
record 3 field 2 = [make-directory:mkdir;] 
record 3 field 3 = [move-to-directory:cd;] 
record 3 field 4 = [url-download-current-dirrectory:wget;] 
record 3 field 5 = [extract-here-tar:tar;] 
record 3 field 6 = [copy:cp;] 
record 3 field 7 = [remove-directory-+files:rm -R;] 
record 3 field 8 = [enter-root:su;] 
record 3 field 9 = [] 
----