awk方法:
$ awk 'NR==1{print substr($0,12,8)};NR==3{print substr($0,4,4)}' input.txt
Ethernet
t6 a
用途NR
,用于确定线路(在AWK术语-记录)数,并且相应地打印已子串的行的。substr()
功能采用格式
substr(string,starting position,how much offset)
蟒蛇
$ python -c 'import sys
> for index,line in enumerate(sys.stdin,1):
> if index == 1:
> print line[11:19]
> if index == 3:
> print line[3:7]' < input.txt
Ethernet
t6 a
这使用<
shell运算符将输入流从输入文件重定向到python进程。请注意,Python中的字符串是0索引的,因此您需要将所需的字符数全部移1。
便携式外壳方式
这部作品在ksh
,dash
,bash
。仅依靠shell实用程序,不依赖外部。
#!/bin/sh
rsubstr(){
i=0;
while [ $i -lt $2 ];
do
rmcount="${rmcount}?"
i=$(($i+1))
done;
echo "${1#$rmcount}"
}
lsubstr(){
printf "%.${2}s\n" "$1"
}
line_handler(){
case $2 in
1) lsubstr "$(rsubstr "$1" 11)" 8 ;;
3) lsubstr "$(rsubstr "$1" 3)" 5 ;;
esac
}
readlines(){
line_count=1
while IFS= read -r line;
do
line_handler "$line" "$line_count"
line_count=$(($line_count+1))
done < $1
}
readlines "$1"
它的工作原理如下:
$ ./get_line_substrings.sh input.txt
Ethernet
t6 ad