2012-03-06 7 views
14

나는이 같은 파일이 있습니다. 이전에 cut을 사용했으나 cut 명령에 줄 바꿈 구분 기호를 지정할 수 없었습니다. 어떻게 할 수 있습니까? 컷 명령 줄 바꿈

는 이런 식으로 작동하지 않습니다 :

cut -d'\n' -f1 

어떤 제안을?

답변

11

합치 또는 표시를 사용 cat. 여기에 필요하지 않습니다 :

while read line ; do 
    echo "$line" 
done < file 
+0

나는 이것에 동의 하겠지만, 이것은 '컷 (cut)'접근보다 현저하게 느리다. –

1
cat FILE|while read line; do # 'line' is the variable name 
    echo "$line" # do something here 
done 

또는 (주석 참조)

while read line; do # 'line' is the variable name 
    echo "$line" # do something here 
done < FILE 
+2

가 [UUOC] (http://en.wikipedia.org/wiki/Cat_%28Unix%29#Useless_use_of_cat) 허용 읽을 라인처럼 순수 bash는 솔루션입니다 Kevin

+0

그것은 쓸모가 없습니다. 아마도이 단락을 읽은 후에 낭비 일 것입니다. 그러나 그것은 또한 더 읽기 쉬운 IMO입니다. – 0xC0000022L

-1

내 생각에 "잘라 내기"는 기본 구분 기호로 '\ n'을 사용합니다.

cut -d^M -f1 file_cut 

내가^M으로 Ctrl 키 +의 V 후 입력을 클릭합니다 당신이 컷을 사용하려면 , 나는 두 가지 방법이있다. 다른 방법은

cut -c 1- file_cut 

도움이 될만한가요?

+0

불행히도, 위의 어떤 것도 나를 위해 일하지 않았다. (bash, 버전 4.2.45). –

39

내가 같은 문제에 자신을 발견, 이것은 나를 위해 작동 :

cat file.cut | cut -d$'\n' -f1 

또는 : 간단하게

cut -d$'\n' -f1 file.cut 
+0

이것은 나를 위해 잘 작동합니다 :) thanks – Sina

3

를 사용

echo -n `cut ...` 

이는에 \ n을 억제 끝

1

그래서 som 정말 좋은 (아마도 더 나은) 답변이 이미 제공되었습니다. 그러나 BASH for-loop를 사용하고자 할 때 원래 질문의 문구를 보면서 Field Separator IFS의 변경으로 솔루션을 언급 한 사람은 아무도 없었습니다. 수행하면서 ...`사용 - 그냥

old_IFS=$IFS 
IFS='\n' 
for field in $(<filename) 
do your_thing; 
done 
IFS=$old_IFS