使用 sed 或 awk 或任何东西有条件地删除前 N 个字符
delete first N characters conditionally using sed or awk or anything
我正在尝试删除行首到第四个字符的零。如果零出现在第 4 个位置之后,则无需删除它。我无法正确实现这一目标。
条件:
01230 <------Delete 1 zero at start.
001230 <-----Delete 2 zeros at start.
0001230 <----Delete 3 zeros at start.
00001230<----Delete 4 zero at start.
000001230<---Delete 4 zero at start and leave 1, output 01230
1234560<-----Delete nothing.
示例:
输入文件:
cat file
0000abc0
00abcde0
0abcede0
00000abcede0
预期输出:
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
使用 {}
指定出现次数,使用 -r
允许扩展的正则表达式语法:
sed -r 's/^0{1,4}//g'
删除行首的 1 到 4 个零。
gawk '{gsub(/^0{1,4}/,"")}1' file
abc0
abcde0
abcede0
0abcede0
我正在尝试删除行首到第四个字符的零。如果零出现在第 4 个位置之后,则无需删除它。我无法正确实现这一目标。
条件:
01230 <------Delete 1 zero at start.
001230 <-----Delete 2 zeros at start.
0001230 <----Delete 3 zeros at start.
00001230<----Delete 4 zero at start.
000001230<---Delete 4 zero at start and leave 1, output 01230
1234560<-----Delete nothing.
示例:
输入文件:
cat file
0000abc0
00abcde0
0abcede0
00000abcede0
预期输出:
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
使用 {}
指定出现次数,使用 -r
允许扩展的正则表达式语法:
sed -r 's/^0{1,4}//g'
删除行首的 1 到 4 个零。
gawk '{gsub(/^0{1,4}/,"")}1' file
abc0
abcde0
abcede0
0abcede0