AWK向左移动空列(到起始位置)
输入: fofo jojo tst fojo jofo sts rhr hrhh渡渡鸟AWK向左移动空列(到起始位置),awk,sed,shift,Awk,Sed,Shift,输入: fofo jojo tst fojo jofo sts rhr hrhh渡渡鸟 jojo hoho jojo zozo roro vovo 输出: fofo jojo tst fojo jofo sts rhr hrhh渡渡鸟 乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔 佐佐·罗罗·波波 注意:请帮助我,我需要移动所有行,其中第一列为空。每个字段都以制表符分隔。在此文件中,有些行从第一列开始,但有些行从第
jojo hoho jojo
zozo roro vovo
输出:
fofo jojo tst
fojo jofo sts
rhr hrhh渡渡鸟
乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔乔
佐佐·罗罗·波波
注意:请帮助我,我需要移动所有行,其中第一列为空。每个字段都以制表符分隔。在此文件中,有些行从第一列开始,但有些行从第二列或第三列开始。
谢谢您可以:
awk '{$1=$1}1' file
fofo jojo tst
fojo jofo sts
rhr hrhh dodo
jojo hoho jojo
zozo roro vovo
您也可以使用awk'$1=$1'
,但这也将删除空行和以0
如果文件以制表符分隔:
cat file
fofo jojo tst
fojo jofo sts
rhr hrhh dodo
jojo hoho jojo
zozo roro vovo
这将删除第一个数据前面的所有空格/制表符,而不更改文件格式:
awk '{sub(/^[[:space:]]*/,"")}1' file
fofo jojo tst
fojo jofo sts
rhr hrhh dodo
jojo hoho jojo
zozo roro vovo
你可以做:
awk '{$1=$1}1' file
fofo jojo tst
fojo jofo sts
rhr hrhh dodo
jojo hoho jojo
zozo roro vovo
您也可以使用awk'$1=$1'
,但这也将删除空行和以0
如果文件以制表符分隔:
cat file
fofo jojo tst
fojo jofo sts
rhr hrhh dodo
jojo hoho jojo
zozo roro vovo
这将删除第一个数据前面的所有空格/制表符,而不更改文件格式:
awk '{sub(/^[[:space:]]*/,"")}1' file
fofo jojo tst
fojo jofo sts
rhr hrhh dodo
jojo hoho jojo
zozo roro vovo
像这样
sed 's/^\s*//' file
或者我不理解这个要求,对吗?像这样
sed 's/^\s*//' file
或者我没有正确理解这个要求?这个
{$1=$1}
(不管是否有OFS=\t
)将“重新格式化”行,也就是说a\tb\t\t\tc
将变成a\tb\tc
。这可能是个问题。至少OP没有提到这一需要。@kent如果我使用这个数据a\tb\t\t\tc
我从我的gnu awk
a\tb\t\t\tc
,那么至少在我的情况下,这不是真的。我刚刚用你的awk'{$1=$1}1'OFS=“\t”文件测试了这个输出,像abc
这样的文件中的一行将变成abc
。我希望我没有做错任何事。@Kent那么我真的理解你了,我以为你说的是字符\t
而不是标签。但是是的,它会重新格式化文件,因此如果这是一个问题,最好使用我最后一个awk
,它将与您的sed
执行相同的操作{$1=$1}
(无论是否使用OFS=\t
)将“重新格式化”行,即a\tb\t\t\tc
将变成a\tb\tc
。这可能是个问题。至少OP没有提到这一需要。@kent如果我使用这个数据a\tb\t\t\tc
我从我的gnu awk
a\tb\t\t\tc
,那么至少在我的情况下,这不是真的。我刚刚用你的awk'{$1=$1}1'OFS=“\t”文件测试了这个输出,像abc
这样的文件中的一行将变成abc
。我希望我没有做错任何事。@Kent那么我真的理解你了,我以为你说的是字符\t
而不是标签。但是,是的,它会重新格式化文件,因此如果这是一个问题,最好使用我最后的awk
,它将与您的sed
执行相同的操作