【发布时间】:2014-11-05 08:03:34
【问题描述】:
我见过与此类似的问题,但在这种情况下似乎没有一个解决方案有效。我有一个看起来像这样的文本文件
START-OF-FILE
RUNDATE=20140910
FIRMNAME=dl
FILETYPE=pc
REPLYFILENAME=TEST
DERIVED=yes
PROGRAMFLAG=oneshot
SECID=ISIN
SECMASTER=yes
PROGRAMNAME=getdata
START-OF-FIELDS
ISSUER
START-OF-DATA
US345370CN85|0|4|FORD MOTOR COMPANY|FORD MOTOR COMPANY| | |
US31679BAC46|0|4|FIFTH STREET FINANCE COR|FIFTH STREET FINANCE COR| | |
END-OF-DATA
END-OF-FILE
我正在尝试编写一个 bash shell 脚本来仅提取“START-OF-DATA”和“END-OF-DATA”之间的文本,不包括这两者。所以我正在寻找的输出看起来像这样
US345370CN85|0|4|FORD MOTOR COMPANY|FORD MOTOR COMPANY| | |
US31679BAC46|0|4|FIFTH STREET FINANCE COR|FIFTH STREET FINANCE COR| | |
目前我写的代码是这样的
while read line
do
name=$line
echo $name | sed -e 's/START-OF-DATA\(.*\)END-OF-DATA/\1/'
done < $1
并像
一样从 bash 运行它./script.sh file.txt
其中 script.sh 是我保存的 shell 脚本,而 file.txt 是上面它读取的文本文件。目前它只是读取并回显整个文件。我猜它的语法很愚蠢。任何指向正确方向的指针都将不胜感激。 谢谢
【问题讨论】: