![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
複数のファイルが置かれたディレクトリで(bashで)
$ ls > file.txt
$ mapfile ary < file.txt
とすると、各ファイル名を要素とする配列が変数aryに入ります。
この時、各配列要素にはファイル名だけでなく、file.txtの各行の改行コードが含まれます。
(参考 http://emasaka.blog65.fc2.com/blog-entry-560.html )
この配列要素から改行コードを取り除くべく
for LINELF in "${ary[@]}"
do
LINE=${LINELF%\n}
done;
としても改行コードを取り除けません。
for LINELF in "${ary[@]}"
do
LINE=${LINELF%?}
done;
とすれば取り除けるので実害はないのですが、変数の値の中の改行コードはどのように表現するのでしょうか?
2011年5月12日
No.3ベストアンサー
- 回答日時:
bashで\n等のエスケープシーケンスを使うには$'\n'という形でシングルクオートに$を付けたもので括る必要があります。
LINE=${LINELF%$'\n'}
ただ、mapfileのマニュアル(bashの内部コマンドなので、 man bash の中にある)を見ると
> mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]
> readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]
(略)
> -t Remove a trailing newline from each line read.
(訳: 各入力行から、最後の改行を取り除く)
とあります。つまり、今回の目的なら
mapfile -t ary < file.txt
とすればforの中で特に処理する必要がなくなります。
kmeeさま、ありがとうございます。
> bashで\n等のエスケープシーケンスを使うには$'\n'という形でシングルクオートに$を付けたもので括る必要があります。
> LINE=${LINELF%$'\n'
$'\n'で改行を現せることを確認しました。
> mapfile -t ary < file.txt
これも確認できました。
'man bash'に書かれていたのですね。
勉強になりました。
No.2
- 回答日時:
> この配列要素から改行コードを取り除くべく
>
> for LINELF in "${ary[@]}"
> do
> LINE=${LINELF%\n}
> done;
\nってどこかに書かれてましたか?
for LINELF in "${ary[@]}"
do
LINE=${LINELF%\
}
done;
上記で良さそうですね。
※ 説明 \の後ろの \n が文字として${LINELF%\[次の文字の機能を抑止し文字として書いた事にする]\n
}
って解釈されると思いますので、それでやりたい事が実現できるのでは?
例えば
kaigyoiri="ABC abc
"
とすれば、$kaigyoiriの内容は"ABC abc\n"になりますし、\n入れたければ多くの端末では Ctrl-v Ctrl-mで\rが入ります。(表示は ^M )
※ vi で文字としてCRを入れる場合には使えます。
EmacsだとCtrl-q Ctrl-mです。
この回答への補足
> \nってどこかに書かれてましたか?
どこに書かれていたというわけではなく、LFは\nで表現すると思い込みです。
> for LINELF in "${ary[@]}"
> do
> LINE=${LINELF%\
> }
> done;
をスクリプトにこのまま書き込んでみましたが、改行が付いています。
\を行末に置くと、次行を行の継続とする機能となるのでは?
全然わかっていないのかなぁ。
No.1
- 回答日時:
テキストを何であるかを判断するのには難しい問題があり、該当する文字コードで類推する方法しか今のところありません。
まず、自分の環境が、何の環境なのか理解する事です。例えば、
http://w3.kcua.ac.jp/~fujiwara/infosci/jpchar.html
のような事があります。UNIX系ではLF(ラインフィールド)と言うことですね。しかし、日本語環境だと、これ以外にもはります。
http://search.yahoo.co.jp/search?b=1&n=10&ei=UTF …
と言うことです。この手の文献をよんで、環境に合わせて、フィルタリングするしかないでしょう。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.ph …
http://shellscript.sunone.me/filter_sed.html
なお、リストしたURLは該当する記事があるので、掲載してのであって、それが正しい記事が書かれているかは精査していません。
この回答への補足
うちの環境(Ubuntu Linux)では改行はLFであり、bashでは \n と記述すればよいと思っているのですが、どうもそうではないようで、よくわかりません。別にLFをCR+LFにしたいわけではなく、LFを取り去りたいだけなのですが。
補足日時:2011/05/13 23:40お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Excel(エクセル) マクロでテキストファイルを読み込んだ際の最終セルにデータと改行が含まれる問題の改善方法 2 2022/03/25 16:50
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- Visual Basic(VBA) サブフォルダ(データ)にある複数の.xlsxファイルのSheet3のA2セルの値で01から左側をB2 2 2022/08/14 15:46
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- その他(プログラミング・Web制作) python OpenPyXLを使って出力結果をエクセルに書き込み 2 2022/06/04 19:46
- その他(プログラミング・Web制作) python 気象データの取得 2 2023/06/20 23:54
- PHP SQLとPHPの連結方法がわからないのでアドバイスお願い致します 1 2022/07/12 12:16
- Visual Basic(VBA) マクロVBA 1シートをまとめる 閉じ方 初心者 SOS! 1 2022/06/17 14:54
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
メモ帳での一括たて列選択
-
【文字コード】コピー&ペース...
-
Linuxで書いたプレーンテキスト...
-
LinuxMintで,Windows時代に作成...
-
ファイル名の付け方(中央揃え)
-
編集中にロックのかかるエディ...
-
アイコンと拡張子について
-
windowsのメモ帳からlinuxへコピペ
-
xcodeで改行が。。
-
嫌ってるのに真似してきたりマ...
-
ファイルの単位
-
Winmerge ファイルの中身は同じ...
-
onedriveの中身を削除したらパ...
-
教えてください!困ってます。
-
ファイルの先頭行を全て削除したい
-
ごみ箱から元に戻したのに表示...
-
Windows10 フォルダ内の自動並...
-
macのdmgファイル(動画)をMP4...
-
拡張子.dどういう意味
-
Mac OS Xで、CD-Rにデータを焼...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
メモ帳での一括たて列選択
-
ViエディタとVimエディタの違い...
-
windowsのメモ帳からlinuxへコピペ
-
Macで簡単に改行を解除したい
-
【文字コード】コピー&ペース...
-
LinuxMintで,Windows時代に作成...
-
ファイル名の付け方(中央揃え)
-
ubuntuでテキストファイルが開...
-
テキストファイルをページ番号...
-
英語版WindowsでのCSVファイル...
-
.batファイル作成 mailto: コ...
-
コピー&ペースト時の文字コー...
-
XMLの表示文字化け
-
UTF-8 環境をSJIS化した後の改...
-
SolarisからLinuxへコピーした...
-
MS-DOSテキストファイルっ...
-
Linuxで書いたプレーンテキスト...
-
Apache 文字化けしてWebに表示...
-
illustrator cs2「均等配置(最...
-
photoshopのデータが勝手にクリ...
おすすめ情報