我想过滤文件的某些列,它有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
字面意思。但我想现在这并不重要,只是发表评论。
谢谢你!
答案1
那是你要的吗?
cat thefile | tr '\t' ' '| tr -s " " | cut -d' ' -f25-46
如果解决了您的问题,请标记为正确答案