根据该值检查值和标签,并使用 shell 追加到同一行
Check a Value and Tag according to that value and append in same row using shell
我有一个文件
NUMBER|05-1-2016|05-2-2016|05-3-2016|05-4-2016|
0000000 | 0 | 225.993 | 0 | 324|
0003450 | 89| 225.993 | 0 | 324|
0005350 | 454 | 225.993 | 54 | 324|
例如 header
中有四个日期
我想检查字段 1 'number' 的日期下的值,并根据使用 shell 的标签值
例如,如果值介于 0-100 之间,标记 'L',如果大于 100,则标记 'H'
所以输出应该像
NUMBER|05-1-2016|05-2-2016|05-3-2016|05-4-2016|05-1-2016|05-2-2016|05-3-2016|05-4-2016|
0000000 | 0 | 225.993 | 0 | 324| L | H | L | H|
0003450 | 89| 225.993 | 0 | 324|L | H | L | H|
0005350 | 454 | 225.993 | 54 | 324|H | H | L | H|
一个简单粗暴的例子,即:
- 将输入和输出字段分隔符(下面的
-F
和OFS
)设置为|
、
- 打印 header(用
NR==1
记录)
- for all others 打印字段 1-5,然后对字段 2-5
执行函数 lh
- 定义函数 lh,作为一个返回
L
值 < 100,和 H
返回所有其他值
代码:
awk -F \| '
BEGIN {OFS="|"}
NR==1 {print}
NR > 1 {print , , , , , lh(), lh(), lh(), lh() }
function lh(val) { return (val < 100) ? "L" : "H"}
' file.txt
替代函数lh
:
function lh(val) {
result = "";
if (val < 100) {
result = "L";
} else {
result = "H";
}
return result;
}
我有一个文件
NUMBER|05-1-2016|05-2-2016|05-3-2016|05-4-2016|
0000000 | 0 | 225.993 | 0 | 324|
0003450 | 89| 225.993 | 0 | 324|
0005350 | 454 | 225.993 | 54 | 324|
例如 header
中有四个日期
我想检查字段 1 'number' 的日期下的值,并根据使用 shell 的标签值
例如,如果值介于 0-100 之间,标记 'L',如果大于 100,则标记 'H'
所以输出应该像
NUMBER|05-1-2016|05-2-2016|05-3-2016|05-4-2016|05-1-2016|05-2-2016|05-3-2016|05-4-2016|
0000000 | 0 | 225.993 | 0 | 324| L | H | L | H|
0003450 | 89| 225.993 | 0 | 324|L | H | L | H|
0005350 | 454 | 225.993 | 54 | 324|H | H | L | H|
一个简单粗暴的例子,即:
- 将输入和输出字段分隔符(下面的
-F
和OFS
)设置为|
、 - 打印 header(用
NR==1
记录) - for all others 打印字段 1-5,然后对字段 2-5 执行函数
- 定义函数 lh,作为一个返回
L
值 < 100,和H
返回所有其他值
lh
代码:
awk -F \| '
BEGIN {OFS="|"}
NR==1 {print}
NR > 1 {print , , , , , lh(), lh(), lh(), lh() }
function lh(val) { return (val < 100) ? "L" : "H"}
' file.txt
替代函数lh
:
function lh(val) {
result = "";
if (val < 100) {
result = "L";
} else {
result = "H";
}
return result;
}