코드가 실행되는 순서대로 특정 텍스트가 포함된 줄을 파일 상단으로 이동하려면 어떻게 해야 합니까?
이것은 내 코드입니다.
printf 'g?_001\|_002\|_003\|_004\|_005?m0\nwq\n' | ed -s target_file
(크레딧은 다음과 같습니다.강철 드라이버이 지점까지 가도록 도와주세요. 이 사이트의 정말 놀라운 사용자입니다! )
그러면 다음과 같이 맨 위로 이동됩니다.
name_003
name_005
name_004
name_002
name_001
아니면 원래 순서와 상관없이 맨 위로 이동하세요.
printf
하지만 in 및 ed 와 동일한 순서로 배치해야 하므로 code
이 경우 예를 들면 다음과 같습니다.
name_001
name_002
name_003
name_004
name_005
누구든지 및 에 대해 잘 알고 printf
있습니까 ed
?
답변1
별도의 이동 명령을 사용하십시오.
ex -sc 'g?_005?m0' -c 'g?_004?m0' -c 'g?_003?m0' -c 'g?_002?m0' -c 'g?_001?m0' -c wq target_file
알아채다:
- 대신 저는
ex
여기(실제로는 Vim)를 사용하고 있습니다ed
. options을 사용하여 명령줄에서 ex 명령을 지정할 수 있으므로-c
그럴printf
필요가 없습니다. - 패턴은 역순이어야 합니다(
005
먼저 위로 이동한 다음 ,004
아래로 밀고005
, 다음으로 , 아래 로003
밀고 , ...).004
005
printf
및 를 사용하면 ed
아마도 다음과 같습니다.
(printf 'g?%s?m0\n' {005..001}; printf 'wq\n') |
ed -s target_file