如何根据第1列的条件添加第5列?
输入:
word2 1 2 3
word3 5 6 2
word2 8 9 6
word1 5 6 6
word5 7 8 8
word4 9 8 6
awk '{ if ( ( $1 ~ /word1/ {$5 == "0.0697") &&
( $1 ~ /word2/ {$5 == "0.0645") &&
( $1 ~ /word3/ {$5 == "0.0655") &&
( $1 ~ /word4/ {$5 == "0.0677") &&
( $1 ~ /word5/ {$5 == "0.0678") ) {print $1, $2, $3, $4, $5}}' input > output
所需输出输出:
word2 1 2 3 0.0645
word3 5 6 2 0.0655
word2 8 9 6 0.0645
word1 5 6 6 0.0697
word5 7 8 8 0.0678
word4 9 8 6 0.0677
您能不能尝试以下操作。
awk '{ if( $1 ~ /word1/) {$5 = "0.0697"}
else if ( $1 ~ /word2/) {$5 = "0.0645"}
else if ( $1 ~ /word3/) {$5 = "0.0655"}
else if ( $1 ~ /word4/) {$5 = "0.0677"}
else if ( $1 ~ /word5/) {$5 = "0.0678"}
}
{
print $1, $2, $3, $4, $5
}
' Input_file
或者您也可以在如下代码中将1
替换为print $1, $2, $3, $4, $5
:
awk '{ if( $1 ~ /word1/) {$5 = "0.0697"}
else if ( $1 ~ /word2/) {$5 = "0.0645"}
else if ( $1 ~ /word3/) {$5 = "0.0655"}
else if ( $1 ~ /word4/) {$5 = "0.0677"}
else if ( $1 ~ /word5/) {$5 = "0.0678"}
}
1
' Input_file
OP的方法存在问题:
{$5 == "0.0697")
:
1-我们不应使用用于检查条件的==
,而应使用=
。
2-在分配值时使用}
将其关闭。
awk '$1 ~ /word1/ {$5 = "0.0697"};
$1 ~ /word2/ {$5 = "0.0645"};
$1 ~ /word3/ {$5 = "0.0655"};
$1 ~ /word4/ {$5 = "0.0677"};
$1 ~ /word5/ {$5 = "0.0678"};
{print}' file
输出:
字2 1 2 3 0.0645字3 5 6 2 0.0655字2 8 9 6 0.0645字1 5 6 6 0.0697字5 7 8 8 0.0678字4 9 8 6 0.0677