Linux

如何刪除列中的空格?

  • August 24, 2018

我想過濾文件的某些列,它總共有46個。我只想從25過濾到46,通過以下方式:

期望的輸出:

Column25 Column26 ... Column47
Column25 Column26 ... Column47
Column25 Column26 ... Column47

我有正確的 awk 命令:

cat -n <(awk '{n=17;if(NR==1)n=25;for(i=n;i<=NF;i++) a[$i]++} END{for(val in a) print val,a[val]}' filelog.txt)

上面的命令從25列到最後一列,在本例中是47。它工作正常,在我想要的所有欄位中列印所有字元串。


但是這裡有一個問題:

我想列印的列有空格,如下所示:

Column25 Column26     ...    Column47
Column25 Column26    [...]   Column47
[:space:]Column26  [:space:] Column47
[:space:][:space:] [:space:] [:space:]
Column25 [:space:] [:space:] [:space:]

問題是:當我列印所有特定列時,另一列中的字元串傳遞到所需列中的空格。

例如:

Column25           Column26             ...          Column47
Column25           Stringsofcolumn12  Manystrings Stringsofcolumn21
Stringsofcolumn23  Stringsofcolumn5   ofmanycolumns Stringsofcolumn22
Column25           Stringsofcolumn16  blablabla    anothermanystrings

有什麼方法可以刪除我想列印的列中的空格,以避免這種情況?


筆記:

列的字元串具有與標題相同的文本。例如:如果column28有內容字元串,則字元串是column28字面意思。但我想這並不重要,只是評論。

謝謝!

那是你要的嗎?

cat thefile | tr '\t' ' '| tr -s " " | cut -d' ' -f25-46 

如果能解決您的問題,請標記為正確答案

引用自:https://unix.stackexchange.com/questions/464709