Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.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 从文件中删除字段保持delimeter完整_Linux_Bash_Shell_Unix_Awk - Fatal编程技术网

Linux 从文件中删除字段保持delimeter完整

Linux 从文件中删除字段保持delimeter完整,linux,bash,shell,unix,awk,Linux,Bash,Shell,Unix,Awk,我们需要使用shell脚本删除分隔文件中的某些字段,但我们不希望丢失delimeter。i、 e $cat file1 col1,col2,col3,col4,col5 1234,4567,7890,9876,6754 abcd,efgh,ijkl,rtyt,cvbn now we need to generate different file (say file2) out of file1 with second and fourt

我们需要使用shell脚本删除分隔文件中的某些字段,但我们不希望丢失delimeter。i、 e

   $cat file1
        col1,col2,col3,col4,col5 
        1234,4567,7890,9876,6754
        abcd,efgh,ijkl,rtyt,cvbn

 now we need to generate different file (say file2) out of file1 with second and fourth column removed with delimeter (,) intact
 i.e
   $cat file2
        col1,,col3,,col5 
        1234,,7890,,6754
        abcd,,ijkl,,cvbn
请建议实现这一点的最简单和有效的方法,因为该文件有大约300个字段/列。由于与字段数量相关的限制,AWK无法工作

awk '{$2 = $4 = ""}1' FS=, OFS=, file1 > file2
简单地说:

  • 在开始时将输入和输出字段分隔符设置为
  • 清空每行的字段2和4,然后打印回该行

  • 感谢您的回复,但是awk'{$2=$4=“”}FS=,OFS=,file1没有在任何地方重新启动,因为awk'{$2=$4=“”}1'FS=,OFS=,file1抛出语法错误。什么版本的awk?您是否从答案中剪切并粘贴了内容,或者键入了一些内容并可能导致错误?我很想知道在awk的哪个实现中这会产生语法错误。$awk'{$2=$4=“”}1'FS=,OFS=,file1awk:syntax error靠近第1行awk:bailing out靠近第1行另一个问题是这个文件有超过100个列,所以不能使用awk?在BSDAWK版本20070501中工作(输出
    awk--version
    )共有5985列。应在任何符合posix/sus的awk中工作。您使用的是什么版本?谢谢,但这不起作用,因为实际文件的列数超过100列。它抛出以下错误:awk:尝试访问字段103可能尝试
    gawk
    而不是
    awk
    awk 'BEGIN { FS = OFS = ","; } { $2 = $4 = ""; print }' file1 > file2