我已經在互聯網上搜索過,並嘗試了很多組合,但似乎無法使其工作。只有在括號內出現轉義字符
我想寫一個腳本來創建LaTeX表代碼。這一切都正常工作,直到我有裏面的一個值的符號,例如,
{1702} & {12389122} & {Topic 1 Online Quiz} & {1.7} & {2} & {83.3} \\\hline
{1702} & {12389122} & {Topic 2 & 3 Online Q...} & {1.9} & {2} & {93.3} \\\hline
{1702} & {12389122} & {Topic 4 Online Quiz} & {} & {2} & {} \\\hline
{1702} & {12389122} & {Topic 5 Online Quiz ...} & {} & {2} & {} \\\hline
我需要能夠在input.txt的文件讀取包含此數據,然後將結果輸出到output.txt文件與來自在第2行相距相同的數據我需要轉義&符,例如,
{1702} & {12389122} & {Topic 1 Online Quiz} & {1.7} & {2} & {83.3} \\\hline
{1702} & {12389122} & {Topic 2 \& 3 Online Q...} & {1.9} & {2} & {93.3} \\\hline
{1702} & {12389122} & {Topic 4 Online Quiz} & {} & {2} & {} \\\hline
{1702} & {12389122} & {Topic 5 Online Quiz ...} & {} & {2} & {} \\\hline
但只逃脫該{}
我想可能有之間出現的符號(S)先前接近,但我最後一次嘗試如下:
sed 's/\({[a-zA-Z0-9. _]*\)\(\&\)\([a-zA-Z0-9. _]*}.*\)/\1\\\2\3/' input.txt > output.txt
任何幫助將不勝感激。
您不需要正則表達式的尾部:'sed's/\({[^&}] * \)&/ \ 1 \\\&g'file' –
@EdMorton的確如此。我在正則表達式中添加了尾部,以便在需要在輸入數據中支持多個'&'的情況下,它可以擴展到OP。某些行'sed's/{\([^}] * \)&\([^}] * \)&\([^}] * \)}/{\ 1 \\\&2 \\ &\ 3}/g'input.txt> output.txt' ...等等。 – Prasanna
如果這可能發生,那麼OP應該只使用GNU awk,你可以在while循環中調用gensub()(我確定有一些GNU sed wizardry包含30個單字符和batman符號,你會....)。 –