디렉토리의 각 파일에서 첫 번째 줄을 선택하여 새 텍스트 파일로 인쇄하는 방법


13

여러 .txt파일 이있는 디렉토리가 있습니다.

이 각 파일에서 첫 번째 줄을 선택하여 새 .txt파일 로 인쇄하고 싶습니다 (모든 첫 줄의 목록을 얻으려면).

나는 awkand sed명령으로 그것을 시도하고 그것을 루프와 결합했지만 성공하지 못했습니다.


1
평판 6 명의 사용자 : 아래 답변 중 하나라도 도움이 되었으면 텍스트 왼쪽의 회색 을 클릭하는 것을 잊지 마십시오. 예,이 답변은 유효합니다 ! ;-)
Fabby

답변:


21

사용 head:

head -n1 -q *.txt > new-file
  • -n1head첫 번째 줄만 추출하도록 지시 합니다.
  • -q 파일 이름을 인쇄하지 않도록 head에 지시합니다.

9

사용 grep:

grep -m 1 '.' *.txt >output.file

grep는 모든 문자와 일치하고 첫 번째 일치 후에 종료됩니다. 즉 grep모든 입력 파일의 첫 줄을 출력하고에 저장합니다 out.txt.


1
나는 이것을 좋아한다, 그것은 멋진 작은 핵이다.
Hashim

2

배쉬 만 사용하기 :

for f in *.txt; do <"$f" read line; printf "$line\n" >>new.txt; done
  • *.txt.txt현재 작업 디렉토리에서 끝나는 폴더 / 파일 목록으로 확장됩니다 (끝나는 폴더 .txt는 걱정할 필요가 없으므로).
  • <"$f" read line저장된 파일 경로에서 한 줄을 읽고 f저장합니다 line.
  • printf "$line\n" >>new.txt: 내용 추가 line에를 new.txt;
% cat foo.txt 
line #1 in foo
line #2 in foo
line #3 in foo

% cat bar.txt
line #1 in bar
line #2 in bar
line #3 in bar

% for f in *.txt; do <"$f" read line; printf "$line\n" >>new.txt; done

% cat new.txt 
line #1 in bar
line #1 in foo

kos, 조금 길지만 여기는 +1입니다.
heemayl

@heemayl하지만 Bash 전용입니다. ;)
kos

1
BTW는 15k에
축하합니다

1
@heemayl 감사합니다 : D. 솔직히 나는 질문 XD를 보호하기 위해 미친 것처럼 사이트를 확인하고 있습니다
kos

0

당신은 그것을 시도했습니다 awk, 여기에 awk버전이 있습니다

awk 'FNR==1 {print} {nextfile}' *.txt > out

0

AWK를 사용하는 또 다른 방법은 AWK에 인쇄하도록 지시 한 다음 즉시 다음 파일로 이동하는 것입니다.

tmp:$ touch file1 file2 file3

tmp:$ printf  "Line 1 \n Line 2" | tee file1 file2 file3
Line 1 
 Line 2
tmp:$ awk '{print;nextfile}' file1 file2 file3
Line 1 
Line 1 
Line 1

sed또한 특정 라인을 인쇄 할 수 있습니다. 여기에 그것을 결합했습니다find

tmp:$ find . -name "file*" -exec  sed -n '1p' {} \;                            
Line 1 
Line 1 
Line 1 

그리고 펄 :

tmp:$ find . -name "file*"  -exec perl -ne 'print  if 1..1' {} \;              
Line 1 
Line 1 
Line 1 

그리고 마지막으로 grep

tmp:$ grep -n 1 file1 file2 file3                                              
file1:1:Line 1 
file2:1:Line 1 
file3:1:Line 1 

모든 것을 단일 파일에 저장하는 것은 > outputFile.txt이 명령의 끝에 추가하기 만하면 됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.