Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.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
Bash 使用sed或awk或任何东西有条件地删除前N个字符_Bash_Awk_Sed_Echo_Tr - Fatal编程技术网

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