파일 예
line 1
line 2
line 3
line 4
line 4
이후에 있어야line 1
line 1
line 4
line 2
line 3
중요: 4줄 이상이 될 수 있습니다. 스크립트는 어떻게든 마지막 줄을 읽어야 한다는 것을 이해해야 합니다.아니요4호선.
답변1
또 다른 느리고 긴 버전입니다.
#!/bin/sh
if [ ! -f "$1" ]
then
printf "No input file\n"
exit
fi
FIRST=`head -n 1 "${1}"`
LAST=`tail -n 1 "${1}"`
MID=`sed -n '$d; 2,$p' "${1}"`
printf "${FIRST}\n${LAST}\n${MID}\n"
exit
head
을 사용할 때마다 파일에 액세스하기 때문에 속도가 느려 tail
집니다 sed
. 대용량 파일(또는 여러 파일)에서는 이 현상이 매우 눈에 띄게 나타날 수 있습니다.
답변2
$ printf '4m1\n,p\n' | ed -s file
line 1
line 4
line 2
line 3
짧은 ed
스크립트
4m1
,p
첫 번째 줄 뒤로 네 번째 줄을 이동한 다음 편집 버퍼의 내용을 터미널에 표시합니다.
결과를 새 파일에 저장하려면 다음과 같은 리디렉션을 사용할 수 있습니다.
printf '4m1\n,p\n' | ed -s file >newfile
ed
아니면 파일을 저장하라고 말할 수도 있습니다
printf '4m1\nw newfile\n' | ed -s file
이 명령은 w newfile
편집된 버퍼를 지정된 파일에 저장합니다. 파일 이름이 없는 명령은 w
파일을 원래 파일 이름으로 다시 저장합니다.
줄 편집기는 ed
파일을 메모리로 읽어들이기 때문에 파일 크기가 적당하지만 너무 크지 않은 경우(1GB 미만) 이러한 유형의 작업에 사용할 수 있습니다.
이동마지막행에서 위 명령의 항목 4
으로 변경합니다.$