如何重定向输出以更改特定的 csv 列并写入同一文件。逻辑上:awk 'BEGIN{FS=OFS=","} { = } 1' a.csv > toSameFile
How to redirect output for change specific csv column and write into same file. Logically: awk 'BEGIN{FS=OFS=","} {$19 = $1} 1' a.csv > toSameFile
我需要更改我的 csv 文件中的特定列,awk 命令正在执行我的工作。
awk 'BEGIN{FS=OFS=","} { = } 1' a.csv
但它会打印结果,我需要将其保存到同一个文件中以便稍后使用该文件。
我尝试过的:
awk 'BEGIN{FS=OFS=","} { = } 1' a.csv > a.csv
但它删除了所有内容。
GNU awk:
awk -i inplace 'BEGIN{FS=OFS=","} { = } 1' a.csv > a.csv
任意 awk:
tmp=$(mktemp) &&
awk 'BEGIN{FS=OFS=","} { = } 1' a.csv > "$tmp" &&
mv -- "$tmp" a.csv
后者适用于任何命令。你不能只做 cmd file > file
因为你的 shell 可以先做 > file
部分来初始化输出文件,然后当它尝试 运行 时 cmd file
如您所见,file
部分已经为空。需要 &&
s 以确保当前步骤在执行下一步之前成功,否则如果 mktemp
或 awk
对某些文件失败,您可能最终会切换输入文件并丢失其所有内容原因。
我需要更改我的 csv 文件中的特定列,awk 命令正在执行我的工作。
awk 'BEGIN{FS=OFS=","} { = } 1' a.csv
但它会打印结果,我需要将其保存到同一个文件中以便稍后使用该文件。
我尝试过的:
awk 'BEGIN{FS=OFS=","} { = } 1' a.csv > a.csv
但它删除了所有内容。
GNU awk:
awk -i inplace 'BEGIN{FS=OFS=","} { = } 1' a.csv > a.csv
任意 awk:
tmp=$(mktemp) &&
awk 'BEGIN{FS=OFS=","} { = } 1' a.csv > "$tmp" &&
mv -- "$tmp" a.csv
后者适用于任何命令。你不能只做 cmd file > file
因为你的 shell 可以先做 > file
部分来初始化输出文件,然后当它尝试 运行 时 cmd file
如您所见,file
部分已经为空。需要 &&
s 以确保当前步骤在执行下一步之前成功,否则如果 mktemp
或 awk
对某些文件失败,您可能最终会切换输入文件并丢失其所有内容原因。