getDateFormat() {
year=`echo $1 | awk -F"-" '{print $2}'`
mm=`echo $1 | awk -F"-" '{print $3}'`
i=1
for x in January February march april may july jun august September October November December
do
if [ $mm -eq $ii ]; then
month="$x"
break
fi
ii=`expr $ii + 1`
done
mday=`echo $1 | awk -F"_" '{print $1}' | awk -F"-" '{print $4}'`
tmp_date="${mday}_${month}_$year
}
위의 기능이 무엇인지 알고 싶습니다.
$ awk '$2 == "1" { print $0 }' cols.txt
일치하는 부분이 있으면 전체 줄을 인쇄합니다. 그런데 이 명령은 무엇을 반환합니까?
echo $1 | awk -F"-" '{print $2}'
$ii
- 이게 뭐죠?
i=1;
echo $ii
아무것도 인쇄하지 않습니다.
답변1
$1
첫 번째입니다위치 매개변수즉, 함수의 매개변수입니다. s 필드 구분 기호를 대시로 awk -F-
설정 하고 두 번째 필드를 인쇄합니다. 따라서 에서 을 얻게 됩니다 .awk
print $2
aa-bb-cc
bb
아마도 함수는 다음과 같이 호출될 것으로 예상됩니다. getDateFormat something-2017-06
이상해 보이지만 두 번째 대시로 구분된 필드에서 연도가 선택됩니다.
$ii
변수가 참조되지만 테스트 전에 설정되지 않았으므로 if [ $mm -eq $ii ];
테스트에서 이를 확인합니다 [ 123 -eq ]
( 123
어쩌면 변수에서 일부 숫자를 선택할 수도 있음 $1
). 연산자에 -eq
다른 피연산자가 없기 때문에 오류가 발생합니다.