파일 이 있는데 Config.cfg
파일 이름에 두 번째 줄의 값을 넣어서 이름을 바꾸고 싶습니다.
예:
$ more Config.cfg
!
! Configuration last changed by user '%LICM%' at Tue Jul 4 15:17:04 2017
!
!
!
global synchronization option 2
예상되는 결과:
Config Jul 4 15:17:04 2017.cfg
답변1
일방 통행:
- sed를 사용하여 두 번째 줄을 추출합니다.
- awk를 사용하여 후행 필드를 추출하고 주변 정적 텍스트를 인쇄합니다.
- 성공하면 생성된 값을 사용하여 파일 이름을 바꿉니다.
암호:
val=$(sed -n 2p Config.cfg |
awk '{print "Config " $(NF-3) " " $(NF-2) " " $(NF-1) " " $NF ".cfg"}')
[[ -n "$val" ]] && mv Config.cfg "$val"
답변2
sed
파일 이름을 추출한 경우에만 :
mv file "$(sed -n '/Configuration/s/.*at [^ ]*/Config/p' file)"