我试图在bash中读取一个基本的,空格分隔的文件,我想对变量执行操作。
在bash中引用某些“列”的命名法是什么? 我试图明确使用bash。如果有有用的文档专门引用如何分隔文件和执行基本操作 - 这将非常有用。
我的文本文件的一个例子如下:
123456789 LastName FirstName 1 2 3
123456789 LastName FirstName 1 2 3
123456789 LastName FirstName 1 2 3
123456789 LastName FirstName 1 2 3
123456789 LastName FirstName 1 2 3
我想对它进行排序并对多个列执行操作。
我使用awk完成了这个,但我想在bash中这样做。 我的awk实现:
awk '{average = ($2 + $3 + $4)/3} {print (average, "["$1"]", $2",", $3); average = 0}' $'readme.txt'
如何实现这一目标?
答案 0 :(得分:0)
cut --delimiter=' ' --fields=LIST
其中LIST
是以逗号分隔的列索引列表,返回由LIST
中的索引表示的每个空格分割线的部分。
sort --field-separator=' ' --keys=POS
对文件行进行排序并将其输出到stdout。 --field-separator=' '
导致位置由空格分隔。
POS是F [.C] [OPTS],其中F是字段编号,C是字段中的字符位置;两者都是原点1.如果-t和-b都不起作用,则字段中的字符从前一个空格的开头计算。 OPTS是一个或多个单字母排序选项,它覆盖该键的全局排序选项。如果没有给出密钥,请使用整行作为密钥。
wc -l
将为您提供总行数。
如果您有需要忽略的标题,请使用tail -n +2
从第二行开始获取整个文件。
用管子和子壳将所有东西捆在一起。通常,您需要的处理类型是awk
占有一席之地的原因。