Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.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 awk命令修改文件中的列_Linux_Bash_Shell_Awk_Scripting - Fatal编程技术网

Linux awk命令修改文件中的列

Linux awk命令修改文件中的列,linux,bash,shell,awk,scripting,Linux,Bash,Shell,Awk,Scripting,我编写了一个bash脚本(File.sh),用一个特定的字符串(NULL)更改文件(File.txt)的第三列 File.txt- abc def 123 qwe gfh 456 File.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" 但

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

File.txt-

abc def 123
qwe gfh 456
File.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"
但是现在我正在尝试使用变量而不是文本来更新第三列-

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

这不管用。语法上可能有什么错误。

请尝试以下内容

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

您已执行O(n)操作并使其成为O(n^2)。对于文件中的每一行,您将浏览整个文件并更改第3列中的条目。别那么做,它起作用了。谢谢
var="NULL"
awk -v var="$var" '{$3=var} 1' Input_file > temp_file && mv temp_file Input_fle