[英]awk: remove multiple tabs between each fields and output a line where each field is separated by a single tab
我有一個文件,它的第 11 行理論上應該有 1011 列,但它的每個字段之間似乎有 1 個以上的選項卡。 更具體地說,如果我使用
awk '{print NF}' file
然后我可以看到第 11 行與所有其他行的字段數相同(除了前十行,它們具有不同的格式。這是預期的)。 但如果我使用
awk 'BEGIN{FS="\t"} {print NF}' file
我可以看到第 11 行有 2001 個字段。 基於這一點,我懷疑它的某些字段被多個空格分隔。 我想讓每個字段只用 1 個標簽分隔,所以我試過了
awk 'BEGIN{OFS="\t"} {print}' file > file.modified
但是,這並不能解決問題,因為
awk 'BEGIN{FS="\t"} {print NF}' file.modified
仍然表示第 11 行有 2001 個字段。 任何人都可以指出實現我的目標的方法嗎? 非常感謝! 我已將文件的前 100 行放在以下谷歌驅動器鏈接中。 https://drive.google.com/file/d/1qOjzjUnJKJpc4VpDxwKPBcqMS7MUuyKy/view?usp=sharing
要將多個標簽壓縮到一個標簽,您可以使用tr
:
tr -s '\t' <file >file.modified
這可能對 GNU awk 有幫助:
awk 'BEGIN{FS="\t+"; OFS="\t"} {$1=$1; print}' file
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.