我想將文本文件的前六個字符讀入一個字符串,並在該文件中用該字符串前面加上其他所有非空行。此類文件的一個例子是:sed中的命令替換
04/17 Walmart .toys $ 70 .cash $ -70
Caltex .gas 20 $ .cheque $ -20
McDonalds .burger 1 $ .cash $ -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外觀吸引了我,但我不知道該怎麼然後在開始插入我的字符串。
我也無法找到明確的答案,以我的堆棧溢出 問題。
我想它接受一個文件名的腳本:
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'
這很奇怪,除了掛在我的GNU sed 4.2.1之外,它似乎沒有在這裏做任何事情。但我想我多多少少會看到你想要做的事情。 – HarryH
@HarryH,它可以在* GNU sed v4.2.2 *上運行。 – agc
GNU sed 4.2.1的聯機幫助頁未提及'-E'選項。我嘗試了'-r'選項,但仍然掛起。 – HarryH