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
이것은 <
쉘 연산자를 사용 하여 입력 스트림을 입력 파일에서 파이썬 프로세스로 리디렉션합니다. 파이썬의 문자열은 인덱스가 0이므로 원하는 문자 수를 모두 1 씩 이동해야합니다.
휴대용 쉘 방식
이것은 ksh
,, dash
에서 작동합니다 bash
. 쉘 유틸리티에만 의존하고 외부는 사용하지 않습니다.
#!/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