Unix 替换数据最后一列中的数字

Unix 替换数据最后一列中的数字,unix,Unix,快速提问,对于了解语法的人来说应该相当简单,问题是标题上说了什么。如果我以此为例: Something1 hi bye 12 Cars32 hello bye 23 Cars32 hello bye 65 Cars32 hello bye 34 word hello bye 42 Cars32 hello bye 32 Cars32 hello bye 75 Cars32 hello bye 12 Cars32 hello

快速提问,对于了解语法的人来说应该相当简单,问题是标题上说了什么。如果我以此为例:

    Something1 hi bye 12
    Cars32 hello bye 23
    Cars32 hello bye 65
    Cars32 hello bye 34
    word hello bye 42
    Cars32 hello bye 32
    Cars32 hello bye 75
    Cars32 hello bye 12
    Cars32 hello bye 42

我想用3替换最后一列中所有出现的12,用5替换所有42。我该怎么做呢。谢谢。

这里有一种方法,使用
awk

#!/bin/sh
awk '\
{
  val = $4;
  if(val == 12) {
    val = 3;
  }else if(val == 42){
    val = 5;
  }
  print $1, $2, $3, val;
}'
$ awk '$NF==12{$NF=3}$NF==42{$NF=5}1' file
Something1 hi bye 3
Cars32 hello bye 23
Cars32 hello bye 65
Cars32 hello bye 34
word hello bye 5
Cars32 hello bye 32
Cars32 hello bye 75
Cars32 hello bye 3
Cars32 hello bye 5
如果文本文件另存为
example.txt
,请将此
awk
脚本另存为
exampleScript
(以及
chmod 777
以使其可执行),然后将其作为

cat example.txt |./exampleScript

输出:

Something1 hi bye 3
Cars32 hello bye 23
Cars32 hello bye 65
Cars32 hello bye 34
word hello bye 5
Cars32 hello bye 32
Cars32 hello bye 75
Cars32 hello bye 3
Cars32 hello bye 5

这里有一种方法,使用
awk

#!/bin/sh
awk '\
{
  val = $4;
  if(val == 12) {
    val = 3;
  }else if(val == 42){
    val = 5;
  }
  print $1, $2, $3, val;
}'
$ awk '$NF==12{$NF=3}$NF==42{$NF=5}1' file
Something1 hi bye 3
Cars32 hello bye 23
Cars32 hello bye 65
Cars32 hello bye 34
word hello bye 5
Cars32 hello bye 32
Cars32 hello bye 75
Cars32 hello bye 3
Cars32 hello bye 5
如果文本文件另存为
example.txt
,请将此
awk
脚本另存为
exampleScript
(以及
chmod 777
以使其可执行),然后将其作为

cat example.txt |./exampleScript

输出:

Something1 hi bye 3
Cars32 hello bye 23
Cars32 hello bye 65
Cars32 hello bye 34
word hello bye 5
Cars32 hello bye 32
Cars32 hello bye 75
Cars32 hello bye 3
Cars32 hello bye 5

以下是如何使用
awk

#!/bin/sh
awk '\
{
  val = $4;
  if(val == 12) {
    val = 3;
  }else if(val == 42){
    val = 5;
  }
  print $1, $2, $3, val;
}'
$ awk '$NF==12{$NF=3}$NF==42{$NF=5}1' file
Something1 hi bye 3
Cars32 hello bye 23
Cars32 hello bye 65
Cars32 hello bye 34
word hello bye 5
Cars32 hello bye 32
Cars32 hello bye 75
Cars32 hello bye 3
Cars32 hello bye 5

以下是如何使用
awk

#!/bin/sh
awk '\
{
  val = $4;
  if(val == 12) {
    val = 3;
  }else if(val == 42){
    val = 5;
  }
  print $1, $2, $3, val;
}'
$ awk '$NF==12{$NF=3}$NF==42{$NF=5}1' file
Something1 hi bye 3
Cars32 hello bye 23
Cars32 hello bye 65
Cars32 hello bye 34
word hello bye 5
Cars32 hello bye 32
Cars32 hello bye 75
Cars32 hello bye 3
Cars32 hello bye 5

步骤:决定需要哪种语言(perl、shell脚本/awk/…、C/C++、…);搜索如何用您选择的语言逐行读取文件;搜索如何查找/替换;将结果导入文件。完成。要想成为一个好问题,您需要自己至少完成上述步骤之一;搜索如何用您选择的语言逐行读取文件;搜索如何查找/替换;将结果导入文件。完成。要成为一个好问题,你需要自己至少完成上面的一个步骤。旁注:每次我用它们写东西时,我通常都要重新学习
awk
sed
perl
,所以请参考本教程:旁注:每次我用它们写东西时,我通常都要重新学习
awk
sed
perl
,因此,请参阅本教程:
$NF
保存此处用于检查和更新的最后一个字段的值。
$NF
保存此处用于检查和更新的最后一个字段的值。