【发布时间】:2021-12-04 15:13:03
【问题描述】:
目标
尝试通过在 From 文件上应用 sed 来创建 To 文件,删除:
- 从第一行到空行
- 空行
来自文件
Description: Master Index of EDGAR Dissemination Feed
Last Data Received: September 30, 2006
Comments: webmaster@sec.gov
Anonymous FTP: ftp://ftp.sec.gov/edgar/
Cloud HTTP: https://www.sec.gov/Archives/
CIK|Company Name|Form Type|Date Filed|Filename
--------------------------------------------------------------------------------
1000045|NICHOLAS FINANCIAL INC|10-Q|2006-08-14|edgar/data/1000045/0001193125-06-172516.txt
1000045|NICHOLAS FINANCIAL INC|8-K|2006-07-27|edgar/data/1000045/0001193125-06-154794.txt
1000069|TEXAS CAPITAL VALUE FUNDS INC|497|2006-09-12|edgar/data/1000069/0001000069-06-000017.txt
归档
CIK|Company Name|Form Type|Date Filed|Filename
1000045|NICHOLAS FINANCIAL INC|10-Q|2006-08-14|edgar/data/1000045/0001193125-06-172516.txt
1000045|NICHOLAS FINANCIAL INC|8-K|2006-07-27|edgar/data/1000045/0001193125-06-154794.txt
1000069|TEXAS CAPITAL VALUE FUNDS INC|497|2006-09-12|edgar/data/1000069/0001000069-06-000017.txt
问题
^[-\s]*$ 与空行不匹配。
$ cat master.csv | sed -e '1,/^$/d; /^[-\s]*$/d'
CIK|Company Name|Form Type|Date Filed|Filename
1000045|NICHOLAS FINANCIAL INC|10-Q|2006-08-14|edgar/data/1000045/0001193125-06-172516.txt
1000045|NICHOLAS FINANCIAL INC|8-K|2006-07-27|edgar/data/1000045/0001193125-06-154794.txt
1000069|TEXAS CAPITAL VALUE FUNDS INC|497|2006-09-12|edgar/data/1000069/0001000069-06-000017.txt
但是,^[- \t]*$ 确实匹配。
$ cat master.csv | sed -e '1,/^$/d; /^[- \t]*$/d'
CIK|Company Name|Form Type|Date Filed|Filename
1000045|NICHOLAS FINANCIAL INC|10-Q|2006-08-14|edgar/data/1000045/0001193125-06-172516.txt
1000045|NICHOLAS FINANCIAL INC|8-K|2006-07-27|edgar/data/1000045/0001193125-06-154794.txt
1000069|TEXAS CAPITAL VALUE FUNDS INC|497|2006-09-12|edgar/data/1000069/0001000069-06-000017.txt
问题
请说明原因。据我了解[ \t] 与[\s] 相同,因此不知道为什么。
【问题讨论】:
-
\s在 sed 正则表达式中并不特殊。 -
如果要删除空行或仅包含空格的行,请使用
/^[[:space:]]*$/d