텍스트 파일이 있는데 다음 세 가지 작업을 수행해야 합니다.
- 파일의 전체 내용을 표시하면서 키워드를 강조 표시하도록 "cat" 명령을 수정합니다.해결책을 찾아라
- 자동으로 단락 번호를 매기려면 "cat" 명령을 수정하세요. 빈 줄로 구분됩니다.
- 마지막 단락만 표시하도록 "cat" 명령을 수정합니다.
까다로운 부분은 이 모든 작업을 다음 사용자가 수행해야 한다는 것입니다.고양이 수정주문하다.
나는 cat이 이에 적합하지 않다는 것을 설명하는 많은 포럼 게시물을 보았고 그 이유를 완전히 이해합니다. 그러나 도전은 나에게 있다고양이를 사용해야 함!
답변1
정말 고양이를 사용해야합니까?
cat -n thefile | tail -n1
"파일의 전체 내용을 표시하면서 키워드를 강조 표시"한다는 것은 무엇을 의미합니까?
강조하고 싶은 키워드는 무엇인가요?
모든 단락에 번호를 매기고 마지막 단락만 표시하는 목적은 무엇입니까? (참고: 제가 작성한 명령은 이 작업을 수행합니다. cat -n은 단락 번호를 매기고 tail -n1은 마지막 단락만 표시합니다.)
답변2
GCSE 컴퓨팅을 가르치는 데 행운이 있기를 바랍니다. ;) 문제에서 cat의 사용을 명시하지 않습니다. 적어도 문제 시트에는 없습니다!
나는 이미 했어
perl -00pe ‘s/^/$. /’ textfile
7ii 및
perl -00pe ‘s/^/$. /’ jamestextfile | tail -n1
7iii의 경우
7번 문제에서 가장 중요한 것은 파이프 같은 것을 사용하는 것입니다.
답변3
이 질문과 댓글이 흥미로워서 좀 더 깊이 살펴봤습니다. 제공된 의견을 바탕으로 질문이 "어떻게출력 수정고양이 명령?", 가능하다면 명령 스위치를 사용하면 됩니다. 예제 입력이 제공되고 예상되는 출력이 표시되면 문제를 더 쉽게 이해할 수 있습니다.
TEST_FILE
다음이 주어진다고 가정합니다 :
This is the first (1) paragraph. This is the second (2) sentence. This is the third (3) sentence.\n The fourth (4) sentence of the first (1) paragraph is the second (2) line of the first (1) paragraph.
This is the second (2) paragraph. This is the second (2) sentence of the second (2) paragraph. This is the third (3) sentence of the second (2) paragraph.
This is the third (3) paragraph. This is the second (2) sentence. This is the third (3) sentence of the second (3) paragraph.
This is the fourth (4) paragraph. This is the second (2) sentence of the fourth (4) paragraph. This is the third (3) sentence.
This is the fifth (5) paragraph. This is the second (2) sentence. This is the third (3) sentence.\n The fourth (4) sentence of the fifth (5) paragraph is the second (2) line of the fifth (5) paragraph.
단락은 (필요에 따라) 빈 줄로 구분되지 않지만 특정 명령이 어떻게 작동하는지 이해하는 것은 여전히 유익합니다.
중복된 빈 출력 라인 억제:
cat -s TEST_FILE
This is the first (1) paragraph. ...
This is the second (2) paragraph. ...
This is the third (3) paragraph. ...
This is the fourth (4) paragraph. ...
This is the fifth (5) paragraph. ...
또한 모든 출력 라인에 번호를 매깁니다.:
cat -s -n TEST_FILE
1 This is the first (1) paragraph. ...
2
3 This is the second (2) paragraph. ...
4
5 This is the third (3) paragraph. ...
6
7 This is the fourth (4) paragraph. ...
8
9 This is the fifth (5) paragraph. ...
비어 있지 않은 출력 라인에만 번호를 매깁니다.:
cat -s -n -b TEST_FILE
1 This is the first (1) paragraph. ...
2 This is the second (2) paragraph. ...
3 This is the third (3) paragraph. ...
4 This is the fourth (4) paragraph. ...
5 This is the fifth (5) paragraph. ...
"찾은 솔루션"에 따라 파이프와 두 번째 명령을 사용하여 cat
명령 출력을 수정하는 데 동의한 것 같습니다. 적어도 이것은 세 번째 요구 사항에 필요합니다.
따라서 숫자 행을 사용하여 동일한 결과를 얻을 수 있습니다 nl
(단, 빈 행이 실제로 비어 있고 공백이 포함되지 않은 경우에만 해당).
cat TEST_FILE | nl
1 This is the first (1) paragraph. ...
2 This is the second (2) paragraph. ...
3 This is the third (3) paragraph. ...
4 This is the fourth (4) paragraph. ...
5 This is the fifth (5) paragraph. ...
그럼 괜찮아요빈 줄 삭제grep
반품:
cat -s -n -b TEST_FILE | grep .
줄에 공백이 포함되어 있으면 먼저 공백을 제거해야 합니다.
grep -v -e '^[[:space:]]*$' TEST_FILE | nl
도착하다Bash의 에코 개행당신은 그것을 사용할 수 있습니다 :
echo -e $(cat -s TEST_FILE | tail -1)
echo -e $(cat -s -n -b TEST_FILE | tail -1)
당신은 또한 수특정 줄 번호만 표시. 그러나 이것은 질문의 범위를 벗어납니다.