Shell:파일에서 번호를 얻는 방법은 무엇입니까?

Shell:파일에서 번호를 얻는 방법은 무엇입니까?
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

다른 많은 가능한 해결책이 있습니다. 이것이 제 마음에 떠오른 첫 번째 해결책입니다.

관련 정보