使用 awk 或 sed 在 unix 中的列中重新编码值
Recode value in the column in unix with awk or sed
在以下文件中,对于第六列中的值不是 1 或 2 的行,第六列的值应替换为 -9。我该怎么做?
old.fam
18_0033 26210 0 0 1 1
18_0036 24595 0 0 1 2
18_0040 25563 0 0 1
18_0041 35990 0 0 0 -8
18_0042 39398 0 0 0 -8
18_0045 21586 0 0 1 1
18_0050 22211 0 0 1 2
new.fam应该是
18_0033 26210 0 0 1 1
18_0036 24595 0 0 1 2
18_0040 25563 0 0 1 -9
18_0041 35990 0 0 0 -9
18_0042 39398 0 0 0 -9
18_0045 21586 0 0 1 1
18_0050 22211 0 0 1 2
编辑:我使用了 cat old.fam | awk '{ if (==1 || ==2) {print " " " " " " " " " " ;} else {print " " " " " " " " " " -9;}}'> new.fam
现在的问题是第 6 列值 (-9) 被替换的行,第 5 列和第 6 列之间没有 space 分隔的 FS。
18_0033 26210 0 0 1 1
18_0036 24595 0 0 1 2
18_0040 25563 0 0 1-9
18_0041 35990 0 0 0-9
18_0042 39398 0 0 0-9
18_0045 21586 0 0 1 1
18_0050 22211 0 0 1 2
这里有一些你可以开始工作的东西:
cat test.txt | awk '{if (==1||==2) {print " " ;} else {print " -9";}}'
awk
脚本执行以下操作:
- 检查第六列的值
- 在两次检查之间,有
awk
||
逻辑或运算符
脚本的其余部分很明显。
编辑
显然 awk
无法处理后跟数字的空格,因此您可以使用此 awk
脚本:
awk '{ if ( ==1|| ==2) {print " " " " " " " " " " ;} else
{print " " " " " " " " " -9";}}'
(注意最后的 " -9"
)
在以下文件中,对于第六列中的值不是 1 或 2 的行,第六列的值应替换为 -9。我该怎么做?
old.fam
18_0033 26210 0 0 1 1
18_0036 24595 0 0 1 2
18_0040 25563 0 0 1
18_0041 35990 0 0 0 -8
18_0042 39398 0 0 0 -8
18_0045 21586 0 0 1 1
18_0050 22211 0 0 1 2
new.fam应该是
18_0033 26210 0 0 1 1
18_0036 24595 0 0 1 2
18_0040 25563 0 0 1 -9
18_0041 35990 0 0 0 -9
18_0042 39398 0 0 0 -9
18_0045 21586 0 0 1 1
18_0050 22211 0 0 1 2
编辑:我使用了 cat old.fam | awk '{ if (==1 || ==2) {print " " " " " " " " " " ;} else {print " " " " " " " " " " -9;}}'> new.fam
现在的问题是第 6 列值 (-9) 被替换的行,第 5 列和第 6 列之间没有 space 分隔的 FS。
18_0033 26210 0 0 1 1
18_0036 24595 0 0 1 2
18_0040 25563 0 0 1-9
18_0041 35990 0 0 0-9
18_0042 39398 0 0 0-9
18_0045 21586 0 0 1 1
18_0050 22211 0 0 1 2
这里有一些你可以开始工作的东西:
cat test.txt | awk '{if (==1||==2) {print " " ;} else {print " -9";}}'
awk
脚本执行以下操作:
- 检查第六列的值
- 在两次检查之间,有
awk
||
逻辑或运算符
脚本的其余部分很明显。
编辑
显然 awk
无法处理后跟数字的空格,因此您可以使用此 awk
脚本:
awk '{ if ( ==1|| ==2) {print " " " " " " " " " " ;} else
{print " " " " " " " " " -9";}}'
(注意最后的 " -9"
)