콜론으로 구분된 필드를 분할하고 액세스하는 방법은 무엇입니까?

콜론으로 구분된 필드를 분할하고 액세스하는 방법은 무엇입니까?

이 코드는:

foreach line (`cat /etc/group`)
    echo $line
end

반환에는 . line로 구분된 4개의 필드가 포함되어 있습니다 :.

필드를 분할하고 각 필드의 첫 번째 필드에 액세스하려면 어떻게 해야 합니까 line?

답변1

foreach line ("`cat /etc/group`")
    set fs = ($line:gas/:/ /)
    set f = ($fs)
    echo "$f[1]"
end

tcsh중간 변수를 생략 하고 fs직접 set f = ($line:gas/:/ /).

변수 수정자는 변수의 모든 발생을 (간단한 텍스트이며 정규식은 인식되지 않음)로 :s/pat/rpl/대체 합니다. pat이 플래그는 모든 발생 항목을 바꾸도록 지시하고 이 플래그는 모든 단어에서 이 작업을 수행하도록 지시합니다.rplpatag

원시 파일을 사용 csh하고 /etc/group파일에 glob 메타 문자가 포함되어 있는 경우 루프를 set noglob/ unset noglob쌍으로 묶어야 합니다.

답변2

-F플래그와 함께 awk를 사용하세요. 다음과 같이 echo와 파이프를 awk에 사용해야 합니다.

for line in `cat /etc/group`
do
   col1=$(echo $line | awk -F':' '{print $1}')
   col2=$(echo $line | awk -F':' '{print $2}')

   # Then you can use col1, col2, etc...

   echo "column 1 = $col1"
   echo "column 2 =  $col2"
done

관련 정보