【发布时间】:2017-05-06 06:34:02
【问题描述】:
我想将文本文件的前六个字符读入一个字符串,并在该文件中的每个其他非空行前面加上该字符串。此类文件的示例可能是:
04/17 Walmart .toys $ 70 .cash $ -70
Caltex .gas 20 $ .cheque $ -20
McDonalds .burger 1 $ .cash $ -1
每个条目,即:每个非空行,都需要一个日期,为了便于数据输入,只在第一行输入了日期。条目由 1 个或多个空行分隔。输出如下所示:
04/17 Walmart .toys $ 70 .cash $ -70
04/17 Caltex .gas 20 $ .cheque $ -20
04/17 McDonalds .burger 1 $ .cash $ -1
我可以将非空字符串与^[^@]+[ ]*.[ ]([^;{}:]+)[ ]*$ 之类的内容匹配,但我不知道如何为非空行实际实现。
This Bash script 看起来对我很有吸引力,但我不知道如何在开头插入我的字符串。
我也无法在 StackOverflow 上找到我的问题的直接答案。
我尝试了一个接受文件名的脚本:
read -n 6 date < $1
sed 's/^/$(echo $date)/' | \
sed 's/^$(echo $date)\n//' | > $newName
我能够想出在每一行前面加上空格的日期(例如字符串:'04/17'),然后从后面没有任何内容的每一行中删除相同的日期。
但是,sed 似乎不接受命令替换:
sed: -e expression #1, char 10: unknown option to `s'
【问题讨论】: