使用awk/sed更改特定列的值

使用awk/sed更改特定列的值,awk,sed,Awk,Sed,我有一个52列的文件。我想将第11列从0替换为1。我的文件中的所有数据都以“|”分隔。我试过下面的命令 awk -F \| '{$11=1; print}' input_file.txt 我已将第11列替换为上述命令。但该文件的输出将分隔符更改为“空格”。我不能仅仅从outfile中删除空格,因为几乎没有列也有有效的空格。在awk脚本的BEGIN子句中,将字段分隔符设置为与-F标志设置的FS相同,否则它将设置为的默认值。 将设置为与awk脚本的BEGIN子句中的FS(使用-F标志设置的字段分

我有一个52列的文件。我想将第11列从0替换为1。我的文件中的所有数据都以“|”分隔。我试过下面的命令

awk -F \| '{$11=1; print}' input_file.txt 
我已将第11列替换为上述命令。但该文件的输出将分隔符更改为“空格”。我不能仅仅从outfile中删除空格,因为几乎没有列也有有效的空格。

awk
脚本的
BEGIN
子句中,将字段分隔符设置为与
-F
标志设置的
FS
相同,否则它将设置为
的默认值。

将设置为与
awk
脚本的
BEGIN
子句中的
FS
(使用
-F
标志设置的字段分隔符)相同,否则设置为默认值
“”

通过此文件筛选您的文件


通过此筛选文件。

您可以尝试使用此sed:

sed -E 's/(([^|]*\|){10})[^|]*(.*)/\11\3/' infile
如果只想从0更改为1

sed -E 's/(([^|]*\|){10})0(.*)/\11\3/' infile

您可以尝试使用此sed:

sed -E 's/(([^|]*\|){10})[^|]*(.*)/\11\3/' infile
如果只想从0更改为1

sed -E 's/(([^|]*\|){10})0(.*)/\11\3/' infile