【问题标题】:awk command to modify a column in a file [duplicate]awk命令修改文件中的列[重复]
【发布时间】:2018-06-12 14:31:37
【问题描述】:

我编写了一个 bash 脚本 (File.sh) 来使用特定字符串 (NULL) 更改文件 (File.txt) 的第三列。

文件.txt -

abc def 123
qwe gfh 456

文件.sh -

#!/bin/bash
FILE1='file.txt'
while IFS= read -r line
do
    awk '$3= "NULL"' file.txt > tmp.txt && mv tmp.txt file.txt
done <"$FILE1"

这很好用。

输出

abc def NULL
qwe gfh NULL

但现在我正在尝试使用变量而不是文本来更新第三列-

var='NULL'
awk '$3= $var' file.txt > tmp.txt && mv tmp.txt file.txt

这不起作用。可能是什么语法错误。

【问题讨论】:

  • 您进行了 O(n) 操作并使其变为 O(n^2)。对于文件中的每一行,您将浏览整个文件并更改第三列中的条目。不要那样做。

标签: linux bash shell awk scripting


【解决方案1】:

请您尝试关注一下。

var="NULL"
awk -v var="$var" '{$3=var} 1' Input_file > temp_file && mv temp_file Input_fle

【讨论】:

  • 成功了。谢谢。
猜你喜欢
  • 2021-04-28
  • 2018-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-30
  • 1970-01-01
  • 1970-01-01
  • 2013-12-23
相关资源
最近更新 更多