如何在解析数据之前替换字符

时间:2014-07-07 02:40:19

标签: linux bash sed

NUM[$a]=`sed '/NE.RE\**/!d;s///;s/\*.*//' < /file.txt

当我使用此代码时,只有*作为行分隔符的文件只有一个被解析的文件,但是当文件有其他分隔符如-时,它可能不会解析那些自从*被指定以来我想要得到。如果我在解析数据之前先将-字符替换为*,是否可以?怎么样?

1 个答案:

答案 0 :(得分:0)

更好地了解正在发生的事情可能会帮助您修改它以满足您的需求。以下表达式不是简单的替换:

sed '/NE.RE\**/!d;s///; s/\*.*//' < /file.txt

分解你有两个主要部分:

sed '/NE.RE\**/!d;s///;

其中说:

/NE.RE\**/!d;s///;  - match 'NE (anychar) RE (followed by) * (zero or more times)'
                    - if matched, remove first matching 'NE (anychar) RE (any number of *)'

然后剩下的一行:

s/\*.*//  - substitute/remove '*' (and any chars that follow)

例如,如果您的file.txt包含:

this line has NE1RE** and NE1RE* some more
this line is just a line
this line has NE2RE* and some more
this line is just a line

运行sed表达式将导致脚本中的以下分配:

this line has  and NE1RE
this line has  and some more

根据解释,如果您需要更改其行为,可以查看可以替换-的位置。祝你好运。