- PR -

シェル内でのreadコマンド

1
投稿者投稿内容
まっく
会議室デビュー日: 2002/08/30
投稿数: 18
投稿日時: 2005-02-25 11:33
お疲れ様です。

#環境ですが、ReaHatAS2.1/文字コードSJISです。

元ファイル(A)の内容を読み込みし、
奇数行の後に偶数行の行をつなげて、
新規ファイル(B)を作成する
シェルスクリプトを作成しています。

奇数行の末尾がスペースで終了するとき
新規ファイル(B)のスペース部分が
潰されてしまうようです。

回避方法をご存じの方がいらっしゃいましたら、
教えてください。
よろしくお願いします。

以下、ソースの一部
--------------------------------------
do
if [ "$RecBuf" != "" ]
then
if [ `expr $LINES % 2` = 0 ]
then
GUSU="$RecBuf";
echo "$GUSU" >> data.txt
echo "$KISU""$GUSU" >> ${SCM3_BAK}/${TMPFILE}
else
KISU="$RecBuf";
fi
LINES=`expr $LINES + 1`
fi
done
--------------------------------------
四十路
会議室デビュー日: 2005/02/25
投稿数: 2
投稿日時: 2005-02-25 14:01
ちょっと環境は違うのですが、読み込む前に$IFS(区切り文字)の設定を変えて
読み込んではいかかでしょうか?

IFS=,
export IFS
:
:
while read LINE; do
:
:
done < sourcefile

# ただし、この例の場合は","がファイルに無いことが前提ですが。
# ","が使われている場合はファイル内に存在しない記号を区切り文字
# とすれば良いです。


[ メッセージ編集済み 編集者: 四十路 編集日時 2005-02-25 14:14 ]
ほろりん
ベテラン
会議室デビュー日: 2004/11/24
投稿数: 98
お住まい・勤務地: あそこ
投稿日時: 2005-02-25 14:03
perlかawkではだめですか?
----
awk '{s0=$0;if(getline==0)$0="";printf("%s%s\n",s0,$0)}' infile >outfile

_________________
おしえて〜。せんせ〜いさ〜ん。

[ メッセージ編集済み 編集者: ほろりん 編集日時 2005-02-25 14:12 ]
MMX
ぬし
会議室デビュー日: 2001/10/26
投稿数: 861
投稿日時: 2005-02-25 15:24
SED の古典芸能の時間です、2行連結
sed -e "N; s/\n//" u.txt
まっく
会議室デビュー日: 2002/08/30
投稿数: 18
投稿日時: 2005-02-25 15:35
まっくです。

皆さん、返信ありがとうございます。

どれも期待したファイルができあがりました。
ただ、今回のファイルはカンマがあり得るので
ほろりんさんかMMXさんの案でいきたいと思います。

ありがとう。
1

スキルアップ/キャリアアップ(JOB@IT)