2012-03-06 11 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の後[Enter]をクリックしてください。別の方法があります

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

これは私のためにうまく働いています:)ありがとう – 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