Bash 使用sed或awk或任何东西有条件地删除前N个字符
我正在尝试删除行首的零,直到第四个字符。如果零出现在第四位之后,则无需删除它。我不能正确地做到这一点 条件: 预期产出: 已经尝试过的:(当然没有帮助)Bash 使用sed或awk或任何东西有条件地删除前N个字符,bash,awk,sed,echo,tr,Bash,Awk,Sed,Echo,Tr,我正在尝试删除行首的零,直到第四个字符。如果零出现在第四位之后,则无需删除它。我不能正确地做到这一点 条件: 预期产出: 已经尝试过的:(当然没有帮助) cat file | sed's/^[0]//g'使用{}指定发生次数,并使用-r允许扩展regexp语法: sed -r 's/^0{1,4}//g' 在行首删除一到四个零 gawk '{gsub(/^0{1,4}/,"")}1' file abc0 abcde0 abcede0 0abcede0 @krzyk,成功了,谢谢。将在几分钟内
cat file | sed's/^[0]//g'使用{}
指定发生次数,并使用-r
允许扩展regexp语法:
sed -r 's/^0{1,4}//g'
在行首删除一到四个零
gawk '{gsub(/^0{1,4}/,"")}1' file
abc0
abcde0
abcede0
0abcede0
@krzyk,成功了,谢谢。将在几分钟内接受它。完全不使用扩展正则表达式是最可移植的。@sjsam My sed(debian)没有-E
选项,因此它不可移植enough@krzyk:即使是我的debian sed也没有,但它对我有效。你试过了吗?@123:是的!我认为在{,4}
中至少暗示了1次,但我的测试结果证明了并非如此。。它的意思是零到四次。的确令人大开眼界……)
abc0
abcde0
abcede0
0abcede0
cat file |sed 's/^[0]//g' <----This just delete one zero at the start
000abc0
0abcde0
abcede0
0000abcede0
cat file | sed 's/^[0][0][0][0]//g'<---THis only works for line having 4 zeros.
abc0
00abcde0
0abcede0
0abcede0
cat file | sed 's/^[0]*//g' <-----Removes all the zeros at start.
abc0
abcde0
abcede0
abcede0
cat file | sed 's/0//g'{4} <------I am lost what it do!!
000abc
00abcde0
0abcede0
000abcede
sed -r 's/^0{1,4}//g'
gawk '{gsub(/^0{1,4}/,"")}1' file
abc0
abcde0
abcede0
0abcede0