이 코드는:
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
이 플래그는 모든 발생 항목을 바꾸도록 지시하고 이 플래그는 모든 단어에서 이 작업을 수행하도록 지시합니다.rpl
pat
a
g
원시 파일을 사용 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