问题描述
我刚开始编写shell脚本
我正在尝试编写一个AWK命令,该命令完全可以完成以下操作
cut --complement -c $IGnorE_RANGE file.txt > tmp
$ IGnorE_RANGE的值可以是1-5或5-10等
我无法使用cut,因为我在AIX中并且AIX不支持--complement,有什么方法可以使用AWK命令实现这一目标
示例:
file.txt
abcdef
123456
cut --complement -c 1-2 file.txt > tmp
cdef
3456
cut --complement -c 4-5 file.txt > tmp
abcf
1236
cut --complement -c 1-5 file.txt > tmp
f
6
解决方法
请您尝试按照所示样本进行以下操作,编写和测试。我们有range
的{{1}}变量,应该在awk
中,我们可以根据需要传递它。
start_of_position-end_of_position
或者为了使理解更加清晰,请尝试以下操作:
awk -v range="4-5" '
BEGIN{
split(range,array,"-")
}
{
print substr($0,1,array[1]-1) substr($0,array[2]+1)
}
' Input_file
说明: 添加以上详细说明。
awk -v range="4-5" '
BEGIN{
split(range,"-")
start=array[1]
end=array[2]
}
{
print substr($0,start-1) substr($0,end+1)
}
' Input_file
,
您可以在awk
中进行此操作:
awk -v st=1 -v en=2 '{print substr($0,st-1) substr($0,en+1)}' file
cdef
3456
或者:
awk -v st=4 -v en=5 '{print substr($0,en+1)}' file
abcf
1236