Linux 从文件中删除字段保持delimeter完整
我们需要使用shell脚本删除分隔文件中的某些字段,但我们不希望丢失delimeter。i、 eLinux 从文件中删除字段保持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
$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
简单地说:
,
感谢您的回复,但是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