Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在linux中,如何将文件中特定列中的唯一值更改为另一个值?_Linux_Awk - Fatal编程技术网

在linux中,如何将文件中特定列中的唯一值更改为另一个值?

在linux中,如何将文件中特定列中的唯一值更改为另一个值?,linux,awk,Linux,Awk,我有这样一个文件: col1 col2 col3 1 1 1 2 1 2 3 1 1 23 2 2 2 1 1 3 2 2 2 2 2 我希望在第二列中,将值为1的所有行更改为4。因此,输出应为: col1 col2 col3 1 4 1 2 4 2 3 4 1 23 2 2 2 4 1 3 2 2 2 2 2 有什么建议吗?你可以看看awk 例如,请尝试以下操作: cat your_file_name | awk{'printf$

我有这样一个文件:

 col1 col2 col3
  1 1 1
  2 1 2
  3 1 1
  23 2 2
  2 1 1
  3 2 2
  2 2 2
我希望在第二列中,将值为1的所有行更改为4。因此,输出应为:

 col1 col2 col3
  1 4 1
  2 4 2
  3 4 1
  23 2 2
  2 4 1
  3 2 2
  2 2 2

有什么建议吗?

你可以看看awk

例如,请尝试以下操作:


cat your_file_name | awk{'printf$1'(($2!=“1”)?$2:“4”)“$3”\n”}
您可以使用
awk
三元运算符

awk '{$2=(($2=="1")?"4":$2)}1' file
由于默认情况下,
awk
将输入字段拆分为一个空格,因此我们可以直接检查
$2
以将值包含为
1
,如果是,我们可以将其替换为
4
,否则保留值本身。
{}1
将打印带有字段更新的文件