从文件中提取股票代码

时间:2017-04-10 13:41:40

标签: awk sed

以下三行是大文本文件的摘录:

9       40        0.5752        2        0.0000        *BRK.B:23.42:24.08:-2.82%        PFE:28.05:26.94:3.97%
9       40        0.5752        2        0.0000        *NOV:23.42:24.08:-2.82%
3       50        0.5752        7        0.0000        C:23.42:24.08:-2.82%             *AAPL:28.05:26.94:3.97%%       *MMM:28.05:26.94:3.97%  

我希望将自动收报机符号提取到一个列中,以便得到:

BRK.B
PFE
C
AAPL
MMM
NOV

我尝试过使用sed和awk的组合,但似乎不允许在同一行上使用可选的代码。

5 个答案:

答案 0 :(得分:1)

对于具体示例,这有效:

$ grep -o '[[:upper:]][[:upper:].]*' infile
BRK.B
PFE
NOV
C
AAPL
MMM

即,任何大写字符,可选地后跟一系列句点或大写字符。 -o只提取匹配项,每个输出行一个。

答案 1 :(得分:1)

grep 方法:

grep -Po '[[:upper:]]+(\.[[:upper:]]+)?' file

输出:

BRK.B
PFE
NOV
C
AAPL
MMM

答案 2 :(得分:0)

您可能需要以下内容:

var checkString = $('div#htmleditior a[href*="' + orphan.attributes.text + '"]");

代码将存储在第1组

Demo

答案 3 :(得分:0)

试试这个 -

friendships

答案 4 :(得分:0)

@try:

awk '/*|%|:/{gsub(/:.*/,"");sub(/\*/,"");print}' RS=" "    Input_file

将RS(记录分隔符)作为空格。然后检查是否有任何行(*或%或:),如果是,则全局替换(:。*)为整行的NULL,然后在当前行中用NULL替换(*)字符串。然后打印Input_file行。