Awk 删除第5列中单词之间的空格
我有数据Awk 删除第5列中单词之间的空格,awk,Awk,我有数据 cell input out type fun level AI20 A1,A2 Z comb ((A1 A2)) 2 IA2 A1,A2,A3 Z comb ((!A1 A2) A3) 3 XOR A1,A2,B1 Z comb (((A1 A2) B1) 3 IAD A1,A2,A3 Z c
cell input out type fun level
AI20 A1,A2 Z comb ((A1 A2)) 2
IA2 A1,A2,A3 Z comb ((!A1 A2) A3) 3
XOR A1,A2,B1 Z comb (((A1 A2) B1) 3
IAD A1,A2,A3 Z comb (!((A1 A2) A3)) 3
INV I1 ZN comb (!I1) 1
BUF A1,A2,A3,B1 Z comb (!(((A1A2) A3) B1)) 4
如何删除字段5(即“乐趣”列)中单词之间的空格
,这样当我执行列-t
时,它们就完全对齐了
我试着用
sed -r 's/[[:blank:]]+//5'
但这只会删除第5列中单词之间的第一个空格。您可以使用带有2个或更多空格的自定义
FS
:
awk-F'[:blank:]{2,}'{gsub(+/,“”,$5)}1'文件|列-t
您可以使用带有2个或更多空格的自定义
FS
:
awk-F'[:blank:]{2,}'{gsub(+/,“”,$5)}1'文件|列-t
考虑到您想从
(
到)
删除空格,您可以尝试以下操作
awk '
match($0,/\(.*\)/){
val=substr($0,RSTART,RLENGTH)
gsub(/ +/,"",val)
print substr($0,1,RSTART-1) val substr($0,RSTART+RLENGTH)
val=""
}
' Input_file | column -t
说明:添加上述内容的详细说明
awk ' ##Starting awk program from here.
match($0,/\(.*\)/){ ##using match function to match from ( to till ) here.
val=substr($0,RSTART,RLENGTH) ##Creating val which has sub string of matched regex value.
gsub(/ +/,"",val) ##Globally substituting spaces with NULL in val here.
print substr($0,1,RSTART-1) val substr($0,RSTART+RLENGTH) ##Printing sub string from 1 to till just before RSTART val and rest of the line then.
val="" ##Nullifying val here.
}
' Input_file ##Mentioning Input_file name here.
考虑到您想从
(
到)
删除空格,您可以尝试以下操作
awk '
match($0,/\(.*\)/){
val=substr($0,RSTART,RLENGTH)
gsub(/ +/,"",val)
print substr($0,1,RSTART-1) val substr($0,RSTART+RLENGTH)
val=""
}
' Input_file | column -t
说明:添加上述内容的详细说明
awk ' ##Starting awk program from here.
match($0,/\(.*\)/){ ##using match function to match from ( to till ) here.
val=substr($0,RSTART,RLENGTH) ##Creating val which has sub string of matched regex value.
gsub(/ +/,"",val) ##Globally substituting spaces with NULL in val here.
print substr($0,1,RSTART-1) val substr($0,RSTART+RLENGTH) ##Printing sub string from 1 to till just before RSTART val and rest of the line then.
val="" ##Nullifying val here.
}
' Input_file ##Mentioning Input_file name here.
你可以试试Perl
$ perl -pe ' s/\(.*\)/($t=$&)=~tr! !!d;$t/gme ' neha2.txt
cell input out type fun level
AI20 A1,A2 Z comb ((A1A2)) 2
IA2 A1,A2,A3 Z comb ((!A1A2)A3) 3
XOR A1,A2,B1 Z comb (((A1A2)B1) 3
IAD A1,A2,A3 Z comb (!((A1A2)A3)) 3
INV I1 ZN comb (!I1) 1
BUF A1,A2,A3,B1 Z comb (!(((A1A2)A3)B1)) 4
$
你可以试试Perl
$ perl -pe ' s/\(.*\)/($t=$&)=~tr! !!d;$t/gme ' neha2.txt
cell input out type fun level
AI20 A1,A2 Z comb ((A1A2)) 2
IA2 A1,A2,A3 Z comb ((!A1A2)A3) 3
XOR A1,A2,B1 Z comb (((A1A2)B1) 3
IAD A1,A2,A3 Z comb (!((A1A2)A3)) 3
INV I1 ZN comb (!I1) 1
BUF A1,A2,A3,B1 Z comb (!(((A1A2)A3)B1)) 4
$
数据选项卡是否以其他方式分开?然后简单地用零替换所有空格。你接受了一个假设列之间总是有2个空格的答案,但我在你的问题中没有看到任何东西表明一列中不能有2个空格(特别是
fun
),或者给定行的列之间只能有1个空格。我怀疑这可能是一个适用于发布的示例的解决方案,但在将来不会适用于实际数据。你;但是,我必须告诉我们更多关于如何分隔数据中的字段的信息。数据是否以其他方式分隔?然后简单地用零替换所有空格。你接受了一个假设列之间总是有2个空格的答案,但我在你的问题中没有看到任何东西表明一列中不能有2个空格(特别是fun
),或者给定行的列之间只能有1个空格。我怀疑这可能是一个适用于发布的示例的解决方案,但在将来不会适用于实际数据。你;不过,我必须告诉我们更多关于数据中字段的分隔情况。