1 2 5 7
텍스트 파일에 이와 같은 숫자가 있습니다. 쉘 스크립트를 사용하여 세 번째 숫자를 인쇄하는 방법은 무엇입니까?
답변1
쉘은 이런 종류의 작업에는 좋은 도구가 아닙니다.이러한 작업을 위해 특별히 설계된 도구가 있습니다:
$ awk '{print $3}' file
5
또는 탭으로 구분된 파일인 경우:
$ cut -f3 file
5
그렇지 않은 경우 연속 공백을 탭으로 변환하고 계속 사용할 수 있습니다 cut
.
$ sed 's/ */\t/g' file | cut -f3
5
또는 단일 공백으로 변환하고 다음을 사용하십시오 cut -d' '
.
$ sed 's/ */ /g' file | cut -d' ' -f3
5
쉘에서 이 작업을 수행하려면 다음을 수행할 수 있습니다.
$ while read a b c rest; do echo "$c"; done < file
5
또는
$ nums=( $(cat file) )
$ echo "${nums[2]}"
5
답변2
다음 명령을 사용하여 파일의 모든 줄에 세 번째 항목을 표시할 수 있습니다(텍스트 파일의 이름이 다음과 같다고 가정).숫자.txt):
while read one two three four; do
echo "$three";
done < numbers.txt
답변3
텍스트 파일의 세 번째 줄을 표시하려면 다음과 같이 하세요.
cat yourfile | head -n 3 | tail -n 1
일을 해야 합니다. 모든 값이 한 행에 있으면 먼저 순서를 변경해야 할 수도 있습니다.
echo 1 2 3 4 5 6 7 | sed -e "s# #\n#g"
1
2
3
4
5
6
7
다른 많은 가능한 해결책이 있습니다. 이것이 제 마음에 떠오른 첫 번째 해결책입니다.