Text-Processing
刪除僅包含數字的列
我有一個包含一些數據的表,我需要刪除僅包含數字(Nr.,Cod,Tiraj)的列:
Nr. Autor Titlu Cod Tiraj Tara 1 Gauss Carl Aritmetica 1 297485 11454 Germania 2 Gauss Carl Aritmatica 2 297484 10254 Germania 3 Gauss Carl Aritmetica 3 297455 45872 Germania
結果應該是這樣的:
Autor Titlu Tara Gauss Carl Aritmetica 1 Germania Gauss Carl Aritmatica 2 Germania Gauss Carl Aritmetica 3 Germania
列由
TAB
我使用這個創建了表:
.TS tab(@); c c c c c c . Nr.@Autor@Titlu@Cod@Tiraj@Tara 1@Gauss Carl@Aritmetica 1@297485@11454@Germania 2@Gauss Carl@Aritmatica 2@297484@10254@Germania 3@Gauss Carl@Aritmetica 3@297455@45872@Germania .TE
您想從或多或少為 CSV 且帶有一些垃圾行並用作欄位分隔符的數據集中刪除 和列
NR.
。Cod``Tiraj``@
sed -e 1,3d -e '$d' file | csvcut -d @ -C 'Nr.,Cod,Tiraj' | csvformat -D @
這個的輸出將是
Autor@Titlu@Tara Gauss Carl@Aritmetica 1@Germania Gauss Carl@Aritmatica 2@Germania Gauss Carl@Aritmetica 3@Germania
添加
sed
刪除的內容並針對新的列數進行調整,並將其寫入新文件:{ printf '%s\n' .TS 'tab(@);' 'l l l .' sed -e 1,3d -e '$d' file | csvcut -d @ -C 'Nr.,Cod,Tiraj' | csvformat -D @ echo .TE } >file.new
csvcut
和實用程序是 csvkit的csvformat
一部分,csvkit 是一個用於處理 CSV 文件的工具包,可從https://csvkit.readthedocs.io/en/latest/獲得最終表格將使用
nroff -t file.new
.您也可以通過執行初始管道的輸出來獲得表格的變體
column -s @ -t
:$ sed -e 1,3d -e '$d' file | csvcut -d @ -C 'Nr.,Cod,Tiraj' | csvformat -D @ | column -s @ -t Autor Titlu Tara Gauss Carl Aritmetica 1 Germania Gauss Carl Aritmatica 2 Germania Gauss Carl Aritmetica 3 Germania
或者,您可以使用
csvlook
:$ sed -e 1,3d -e '$d' file | csvcut -d @ -C 'Nr.,Cod,Tiraj' | csvlook | Autor | Titlu | Tara | | ---------- | ------------ | -------- | | Gauss Carl | Aritmetica 1 | Germania | | Gauss Carl | Aritmatica 2 | Germania | | Gauss Carl | Aritmetica 3 | Germania |
…取決於您實際想要的輸出。