NUM[$a]=`sed '/NE.RE\**/!d;s///;s/\*.*//' < /file.txt
当我使用此代码时,只有*
作为行分隔符的文件只有一个被解析的文件,但是当文件有其他分隔符如-
时,它可能不会解析那些自从*
被指定以来我想要得到。如果我在解析数据之前先将-
字符替换为*
,是否可以?怎么样?
答案 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
根据解释,如果您需要更改其行为,可以查看可以替换-
的位置。祝你好运。