副標題:「我來這裏學習。」如何在列表中設置匹配項,將它們設置爲變量,重新格式化輸出並將其傳遞給另一個腳本?
我需要將我的幾個鏈接集合從Markdown轉換爲另一種格式(具體來說,通過this script將文件中的每行以單個音符的形式發送到Evernote)。
我的示例文件看起來都像這樣:
* [REF_1](URL)
* [REF_2](URL)
* [REF_3](URL)
編輯:或者更精確地說:
* [Koken Installtion Help](http://help.koken.me/customer/portal/articles/2-installation)
* [A couple of Sass functions](http://hugogiraudel.com/2013/08/12/sass-functions/)
* [Chris Coyier's Favorite CodePen Demos](http://davidwalsh.name/chris-coyiers-favorite-pens)
...這是我的作戰計劃:
- 每行解析
- Str IP前導星號/連字符/加按
[REF]
(方括號中的所有內容)空白^[\*\-\+]\s
- 比賽內容用正則表達式
(?<=\[)(.*)(?=\])
follwed它設置爲[URL]
(括號之間的一切)可變${titel}
- 比賽內容用正則表達式
(?<=\()(.*)(?=\))
並將其設置爲變量${url}
- 格式化新輸出,如下例所示。
- 保存爲變量/剪貼板/標準輸出(←我不知道哪個效果最好)並運行
markdown2evernote.rb
就可以了 - 所有行都發送? →完成。
例子(見5點):
Notebook: ${notebook}
Title: ${title}
Url: ${url}
Keywords: ${keywords}
Content Area
Will use the $title and $url variable here again.
坦率地說,我不是來爲止。我已經停留在第二點,因爲我無法弄清楚如何讓正則表達式正常工作。現在,我的bash腳本是這樣的:
#!/bin/sh
document=~/file.txt
notebook="My test notebook"
keywords="test, demo"
cat ${document} | while read line; do \
echo "$line" | sed -e '(?<=\[)(.*)(?=\])'; \
done
我不在乎,如果它是一個sed/grep的/ awk的解決方案 - 我承擔這一切,只要它是一個shell腳本。
我也有興趣在檢查列表中的第2和第3點之後繼續進行下一步操作的最佳方式,並達成我可以將格式化輸出交給ruby腳本的目標。
我有一個模糊的想法,如上所述,但它是一個相當大的挑戰,因爲我寫的腳本到目前爲止,其中更簡單,沒有涉及任何上述。
markdown真的可以用正則表達式解析嗎?如果不是,你很快就會遇到兩個問題:你的原始問題,再加上正則表達式問題。 –
你真的認爲'#!/ bin/sh',對嗎?明確地調用'#!/ bin/bash',如果這是你真正打算使用的。只調用'sh'可能會導致不同操作系統出現問題。祝你好運。 – shellter
@shellter哦,是的,那是一個錯誤。我在編輯器中準備了這個問題,並且沒有註釋所有的行......並且哈希也一樣。雙倍是:我打算使用'#!/ bin/bash'。將解決它。 – pattulus