快速提问,对于懂语法的人来说应该相当简单,问题就在于标题所说的内容。如果我以此为例:
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
我希望将最后一列中所有出现的12替换为3,将所有42替换为5.我将如何进行此操作。感谢。
答案 0 :(得分:2)
以下是一种使用awk
的方法:
#!/bin/sh
awk '\
{
val = $4;
if(val == 12) {
val = 3;
}else if(val == 42){
val = 5;
}
print $1, $2, $3, val;
}'
如果文本文件保存为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
答案 1 :(得分:2)
以下是awk
:
$ 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