2014-04-22 3 views
0

아래 예제와 함께 자습서로 바쁜 일괄 처리 스크립트 작성시 새로운 내용입니다. 한 줄 또는 두 줄을 배울 수있는 배치 스크립트를 작성하는 데 정말로 도움이 필요합니다. 텍스트 줄을 삽입하려면 도움이 필요합니다. 기존 텍스트 파일의 중간에.기존 텍스트 파일을 조작하는 일괄 처리 스크립트

a 
bcd 
efg 
hjiklmnop 
=== === === 
q 
rs 
t 
uvwxyz 

답변

0

sed를 사용하여 라인의 짝수 가정 :

a 
bcd 
efg 
hjiklmnop 
q 
rs 
t 
uvwxyz 

다음은 명령 ./put-in-middle.sh "=== === ===" myfile.txt 가 파일을 수정해야합니다 내용으로 myfile.txt 파일 주어진 예를 들어

:

sed $(($(wc input -l | cut -d' ' -f1)/2))'a=== === ===' input 

그리고이 i s의 스크립트 버전 put-in-middle.sh :

line=$1 
file=$2 
sed $(($(wc $file -l | cut -d' ' -f1)/2))"a$line" $file 
1
@echo off 

rem Count the number of lines in the file with FIND 
for /F %%a in ('find /C /V "" ^< %2') do set numLines=%%a 

rem Get the number of middle line 
set /A middle=numLines/2 

rem Process all lines, use FINDSTR /N to insert line numbers 
for /F "tokens=1* delims=:" %%a in ('findstr /N "^" %2') do (
    rem Echo the original line 
    echo/%%b 
    rem If the line is the middle one... 
    if %%a equ %middle% (
     rem Insert the new line 
     echo %~1 
    ) 
) 

put-in-middle.bat으로 이전 배치 파일을 생성하고이 방법을 실행합니다

put-in-middle "=== === ===" myfile.txt 

주 :

  • 이전 프로그램이 오류를

    확인하지 않습니다 누락 된 매개 변수처럼 원할 경우이 점검이 추가 될 수 있습니다.
  • 라인이 비어있는 경우 "ECHO is on"메시지를 피하기 위해 echo/%%b 명령의 슬래시가 삽입됩니다. 줄에 "/?"문자열이 포함되어 있으면이 경우에는 에코 도움말이 표시되지 않도록 명령을 echo(%%b으로 변경해야합니다 (왼쪽 괄호 만 해당 문자입니다).
  • 파일에 < > | &)과 같은 일괄 특수 문자가 들어 있으면 echo/%%b 명령이 실패합니다. 이 경우 파일 행의 특수 처리가 추가되어야합니다. 새 삽입 된 선에 동일한 점이 적용됩니다.
  • 이전 프로그램은 새 파일을 화면에 표시합니다. 원본 파일을 바꾸려면 출력을 보조 파일로 리디렉션하고 끝에 원래 파일을 바꿔야합니다.

.

(for /F "tokens=1* delims=:" %%a in ('findstr /N "^" %2') do (
    . . . 
)) > auxiliar.txt 
move /Y auxiliar.txt %2 
관련 문제