我看到过类似的问题,但是这种情况下没有一个解决方案似乎能够起作用。我有一个文本文件,看起来像这样
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,文本文件名为file.txt。目前它只读取和回显整个文件。我猜测是语法上的一些小错误。如果有任何指向正确方向的指针,将不胜感激。 谢谢。