c++制表符_在Linux命令行中将制表符(tab)转换为空格
請關(guān)注本頭條號(hào),每天堅(jiān)持更新原創(chuàng)干貨技術(shù)文章。
如需學(xué)習(xí)視頻,請?jiān)谖⑿潘阉鞴娞?hào)“智傳網(wǎng)優(yōu)”直接開始自助視頻學(xué)習(xí)
1. 前言
本教程將從編程的角度向您介紹如何在Linux命令行中將制表符(Tab)轉(zhuǎn)換為空格。
關(guān)于在編程中使用Tab和空格的爭論從未停止過。
雖然您可能喜歡一直使用Tab,但您的編碼指南可能建議使用空格。
但是,如果您已經(jīng)在程序的各個(gè)地方使用了制表符,并且需要將這些制表符轉(zhuǎn)換為空格,以便審閱人員允許您的代碼,那么請往下看。
在本教程中,我將向您展示如何在Linux命令行中將Tab符號(hào)轉(zhuǎn)換為空格符號(hào)。
在Linux命令行中將制表符(tab)轉(zhuǎn)換為空格
2. 在Linux命令行中將制表符(Tab)轉(zhuǎn)換為空格
我使用這個(gè)示例文本文件,這是一個(gè)簡單的c++程序,用于檢查奇數(shù)和偶數(shù)。這是文件的內(nèi)容:
#include?using?namespace?std;int?main()?{????int?n;????cout?<>?n;????if?(n%2?==?0)?{????????cout<在Linux命令行中將制表符(Tab)轉(zhuǎn)換為空格
檢查文本文件是否有tab符有幾種方法可以做到這一點(diǎn)。我發(fā)現(xiàn)最簡單的方法是使用cat命令。您可以使用帶有-T選項(xiàng)的cat命令,并將所有選項(xiàng)卡顯示為^I(標(biāo)準(zhǔn)輸出) 。
cat?-T?tab_file您可以看到文件中制表符(tab)的位置。
#includeusing?namespace?std;int?main(){^Iint?n;^Icout?<>?n;^I^Iif?(n%2?==?0)?{^I^Icout<3. 使用`expand`命令將制表符(tab)轉(zhuǎn)換為空格
如果您對(duì)一個(gè)文件使用expand命令,它會(huì)將所有tab轉(zhuǎn)換成一個(gè)包含8個(gè)空格的塊,并在屏幕上顯示輸出。
expand?tab_file但那不是很方便,你幾乎看不到這里的變化。更好的方法是將輸出結(jié)果保存到另一個(gè)文件中。
expand?tab_file?>?space_file現(xiàn)在,如果使用cat命令查看文件,就不會(huì)再找到制表符tab。
4. 減少空格符的數(shù)量
正如我在前一節(jié)中提到的,默認(rèn)情況下,一個(gè)制表符等于8個(gè)空格。如果你的代碼有這么大的縮進(jìn),那就太奇怪了。
好在您可以使用-t選項(xiàng)更改默認(rèn)空間大小。
expand?-t?N?tab_file例如,如果你必須把每個(gè)tab符變成2個(gè)空格,你可以像這樣使用expand命令:
expand?-t2?tab_file?>?space_file5. 只將最前面的制表符轉(zhuǎn)換為空格
通常在程序中,您只需要轉(zhuǎn)換最前面的制表符,即行首的制表符。
expand也提供了這個(gè)選項(xiàng)。如果您只想將最前面的制表符轉(zhuǎn)換為空格,請使用-i選項(xiàng)。
如果我們繼續(xù)前面的例子,請執(zhí)行以下命令:
expand?-t2?-i?tab_file?>?space_file只將最前面的制表符轉(zhuǎn)換為空格
6. 將制表符轉(zhuǎn)換為空格并將其保存到源文件中
在上面的所有示例中,您已經(jīng)將轉(zhuǎn)換后的文件保存到一個(gè)新文件中。但是,如果您的目標(biāo)是通過將制表符轉(zhuǎn)換為現(xiàn)有代碼文件的空格來清理代碼,那么您可能希望將輸出保存在源文件本身中。
為此,可以使用sponge命令。在將標(biāo)準(zhǔn)輸入寫入輸出之前,用sponge(海綿)“吸收”整個(gè)輸入。當(dāng)您試圖更改和保存相同的文件時(shí),這是非常有用的。
現(xiàn)在,sponge命令可能在您的系統(tǒng)上不可用。您必須安裝moreutils包。
在基于Ubuntu/Debian的發(fā)行版上,你可以使用以下命令來安裝moreutils包:
sudo?apt?install?moreutils安裝后,便可使用它了:
expand?-t2?-i?tab_file?|?sponge?tab_file7. 將一個(gè)目錄中所有匹配的文件中的制表符轉(zhuǎn)換為空格
到目前為止,您所學(xué)的都適用于單個(gè)文件。但是如果你有一個(gè)項(xiàng)目,它有幾個(gè)程序文件,你想把所有的制表符tab都轉(zhuǎn)換成空格,你就需要更好的技術(shù)。
到目前為止,我們所學(xué)到的知識(shí)可以與強(qiáng)大的find和exec命令相結(jié)合。
find?.?-name?'*.cpp'?-type?f?-exec?bash?-c?'expand?-t?4?"$0"?|?sponge?"$0"'?{}?;上面的命令查找所有以擴(kuò)展名cpp結(jié)尾的文件,將這些文件傳遞給expand命令,而expand命令在sponge命令的幫助下將輸出寫入源文件。
您可能認(rèn)為此時(shí)使用sed命令會(huì)更容易一些,但這完全取決于您的愛好和選擇。
8. 總結(jié)
通過本文,你應(yīng)該學(xué)習(xí)到如何通過命令行工具把制表符tab轉(zhuǎn)換為空格了吧?還可以結(jié)合find等命令實(shí)現(xiàn)批量自動(dòng)轉(zhuǎn)換。
總結(jié)
以上是生活随笔為你收集整理的c++制表符_在Linux命令行中将制表符(tab)转换为空格的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 玩转挖矿:家庭矿机组装全攻略!
- 下一篇: 更改python默认路径_Linux下多