$ echo "$(lastlog | grep $USER | awk '{print $(NF-5)" "$(NF-3)" "$(NF-4)" "$(NF-2)" "$(NF-1)" "$(NF-0)}')"
Thu 7 Sep 05:56:35 +0100 2023
값이 다음과 같은 경우 비트를 OR로 바꾸고 싶습니다 +0100
(이 출력은 로케일에 따라 달라질 수 있음을 알고 있습니다).BST
GMT
+0000
$(NF-1)
조건부로 변수 값 설정을 테스트했는데 awk print 명령에 변수를 넣는 방법을 모르겠습니다.
또한 (날짜)가 한 자리인 경우 와 두 자리인 경우 $(NF-5)
사이에 추가 공백을 추가하고 싶습니다.$(NF-3)
$(NF-3)
이 작업을 수행하는 가장 좋은 방법은 무엇입니까?
답변1
시간대의 경우 if
두 가지 가능한 값을 확인하고 싶으므로 - 문을 추가하는 것이 좋습니다.
if($(NF-1)=="+0000") {zone="GMT"}
else if ($(NF-1)=="+0100") {zone="BST"}
else {zone=$(NF-1)}
zone
그런 다음 위에 정의된 변수를 인쇄합니다 . ( print zone
)
print
if 문을 / 명령 에 직접 넣을 수는 없지만 -> printf
와 같이 변경 사항이 하나만 있는 경우에는 다음과 같이 작동합니다.+0000
GMT
print $(NF-1)=="+0000"?"GMT":$(NF-1)
공간 채우기를 위해 $(NF-3)
사운드 모드가 사용됩니다 printf
.
printf "%2s",$(NF-3)
간단히 말해서:
awk '{
if($(NF-1)=="+0000") {zone="GMT"}
else if ($(NF-1)=="+0100") {zone="BST"}
else {zone=$(NF-1)}
printf "%s %2s %s %s %s %s",$(NF-5),$(NF-3),$(NF-4),$(NF-2),zone,$(NF-0)
}'