
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
使っているシステムが何かわかりませんけど、
man sed とか info sed とかしてみました?
ネットで使用例探すのもいいですけど、とりあえずはどういうコマンドがあるのかを
把握しとかないと。
> Nコマンドの使用例を探したのですが、
> ed ':a; /\\$/N; s/\\\n//; ta' (末尾への\と一緒に行を連結)
説明のため複数行に分けます
:a ← ラベルの指定(ここでは'a')
/\\/N ← \ がその行にあったらNコマンドを実行
(\はエスケープしないといけないので二重になっているのに注意)
s/\\n// ← '\n' という文字列を削除(最初に見つかる一回だけ)
ta ← 置換が起きた場合にはラベル aにジャンプ
という流れです。
ついでに
> /abc$/N
> s/\n//
> というコマンドを実行すれば・・・
> ///////////////
> この意味は、
> sed /abc$/N text.txt
> sed s/\n// text.txt
違います。
あえて書くなら sed -e '/abc$/N; s/\n//' test.txt
か
sed -e '/abc$/N' -e 's/\n//' test.txt
です。
(-eオプションはお好みで。わたしはいつもつけますのでここでもそうします)
sedを二回に分けて起動しちゃダメですよ。この場合は。
> s/xyz/&\
> /
>
> の如し。(例は xyz の後に改行を挿入する。& はマッチ全体を示すなり)
> ///////////////
> この意味は、sed s/xyz/&\/ text.txtといった意味ですか?
ちがいます。
\のあとで改行しているのには意味がありますから、/&\/のようにしてはダメです。
つか、そうするとエラーになりませんか?
> また、"&\"の意味することは何ですか?
>(そして何を得るコマンドになるのでしょうか。。)
/&\
/
だったとして、
&は、s/置換対象/置換後の文字列/ としたときの、置換対象にあたる部分に
展開されます。
ですから、この場合は xyz(改行)
になります。
GNU sed なんかだと、置換後の文字列に \n と書くと改行として解釈してくれるのですが、
伝統的なsedではそういうことはしてくれないので、わざわざ本物の
改行を上のような手段で含めてやらなければならないのです。
Man page on sed
ftp://ftp.kek.jp/kek/unix4hep/html/sed1.html
Manpage of SED
http://www.linux.or.jp/JM/html/GNU_sed/man1/sed. …
SED FAQ - Frequently asked questions or "He Sed | She Sed"
http://www.dreamwvr.com/sed-info/sed-faq.html

No.4
- 回答日時:
本当にやりたいことは、改行コードの削除ではなく、sedでそれをどのおうにして実現するかとういことですね。
基本的にはsedでは、無理があると思いますが、参考URLに改行の削除方法が記載されています。しかし、sedで改行を削除しなさいという課題自体に問題があるような気もします。
参考までにtrなら
tr -d '\012' < infile > outfile
でoutfileに改行が削除されたファイルが作られます。
参考URL:http://www.kabipan.com/computer/sed/index.html
書き込みありがとうございます。
そして、URLの添付ありがとうございます。
私もこのURLへは行き着いたのですが、
これまた理解できずに辟易してしまっていました。。トホホです。
もし、お分かりになるようでしたらお聞きしたい。。
///////////////
abcの後に改行が続く場合、この改行を削除しようとしてみる。
abc
edf
なる入力に対し、
/abc$/N
s/\n//
というコマンドを実行すれば・・・
///////////////
この意味は、
sed /abc$/N text.txt
sed s/\n// text.txt
の二行をスクリプトに記述して実行するという意味なのでしょうか。
///////////////
入力にない改行の出力は、改行文字をバックスラッシュで隠せばよい。
s/xyz/&\
/
の如し。(例は xyz の後に改行を挿入する。& はマッチ全体を示すなり)
///////////////
この意味は、sed s/xyz/&\/ text.txtといった意味ですか?
また、"&\"の意味することは何ですか?
(そして何を得るコマンドになるのでしょうか。。)
ホント、探した内容を理解できずに情けないのですが
ご面倒だと思うのですが、教えてはいただけませんか?
よろしくお願いします。
No.3
- 回答日時:
> NコマンドやHコマンドをどのように使用するのか、
> 実際のコマンド行を教えてください。
宿題なんですよね?
解答を直接もらっちゃ意味ないんじゃないですか?
単純に使い方がわからないというのであれば、マニュアル見てね
としかいえません。
> ・*改行の手前まで*をとは何ですか?
> ・ユーザコマンドはどこにあたりますか?
> ・*改行を付加して*出力とは一体なんですか?
> (sed 's/aaa/jjj/g' text.txtだった場合)
text.txtの中身が
aaabbbccc
dddeeefff
ggghhhiii
という三行だったとします。
・まず一行読み込みます(dの手前にある改行まで)。
・改行の手前までをパターンスペースに送ります。
・今回は s/aaa/jjj/g がユーザーコマンドです。
ファイルにスクリプトを書いた場合などは複数のコマンドが
存在する場合があります。
・sコマンドをパターンスペースに対して実行します
・結果を標準出力に送りますがこのとき末尾に改行を付加します。
Man page on sed
ftp://ftp.kek.jp/kek/unix4hep/html/sed1.html
`N'
Add a newline to the pattern space, then append the next line of
input to the pattern space. If there is no more input then `sed'
exits without processing any more commands.
ということなので、ひたすらホールドスペースに溜め込んでいって
入力の終端にきたらホールドスペースの内容をパターンスペースに
持ってきてから s/\n//g を実行する
というやり方ですかね。
引き続きの書き込みありがとうございました。
丁寧に説明いただけたのでやっとなんとかわかりました。
宿題は宿題ですが、点数のでる宿題ではなく、、、
しばらくお休みされる方がお勉強がてらにやっておくように
出してくれたものでして、、、なんとか知りたい内容でして;;すみません。
Nコマンドの使用例を探したのですが、
ed ':a; /\\$/N; s/\\\n//; ta' (末尾への\と一緒に行を連結)
ここで表記されている「N」がNコマンドの実際の使用方法となるのでしょうか。
そして、「s」コマンドとは違い、難しい・・・ということで合ってますか?
「:a;」この表記も構文にあるのでしょうか?「a」はコマンドですか?
「 /\\$/N;」の表記内で、「\\$」は何を意味しているのでしょうか。「$」前に「\\」がを必要な訳は?
「 ta'」この表記も構文にあるのでしょうか?「ta」はコマンドですか?
よろしくお願いします。
No.1
- 回答日時:
sedの動作は、
・一行読み込む
・*改行の手前まで*をパターンスペースに送る
・ユーザーのコマンドを実行
・パターンスペースの末尾に*改行を付加して*出力
というものですので、
sed 's/\n//g' test.txt
ということをいくらやっても、ないものを削除しようとしていることでしかないので
無意味です。
NコマンドとかHコマンドを使って、全体を読み込んでから一気に改行を削除するという
ことになるでしょうが、規格上は8kバイトくらいまでしかバッファのサイズは
保証されていないはずなので、やってもうまく行くとは限りません。
>ご教授いただけないでしょうか。
こういう場での「教えてくれ」というのに対応するのは
「教示」です。「教授」じゃありません。
書き込みありがとうございます。
>NコマンドとかHコマンドを使って、全体を読み込んでから一気に改行を削除する
NコマンドやHコマンドをどのように使用するのか、
実際のコマンド行を教えてください。
また、sedの動作で、
・*改行の手前まで*をとは何ですか?
・ユーザコマンドはどこにあたりますか?
・*改行を付加して*出力とは一体なんですか?
(sed 's/aaa/jjj/g' text.txtだった場合)
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- UNIX・Linux Linuxについて質問です。 以下のhistoryの出力結果から、sedコマンドのファイル名tmp1 1 2023/02/03 20:11
- UNIX・Linux jsLinuxのコマンドについて。 aliasを使い、必ず削除前に確認メッセージを表示するコマンドを 1 2022/07/25 18:37
- UNIX・Linux Ubuntu22.04、nanoエディタの使い方について 2 2022/10/24 19:50
- その他(開発・運用・管理) WindowsからSSHでサーバーにあるファイルをダウンロードできない…。 3 2022/04/24 11:08
- その他(プログラミング・Web制作) DOSコマンドに詳しい方、お知恵をお貸しください 5 2022/11/04 20:55
- Visual Basic(VBA) VBA★PDFをPDFアプリで印刷しようと思っていますが上手くゆきません 1 2022/06/06 22:04
- その他(OS) Vimのコマンドモードで入力した文字列を削除する方法 1 2022/10/13 08:19
- Java mac mini 2009 でのmac OS における Java の入れ替えについて 1 2022/12/27 19:23
- Excel(エクセル) Powershell エクセル検索 完全一致の方法 1 2022/06/05 20:19
- その他(プログラミング・Web制作) ぱそこん、スマホのos、アプリに使われてるコマンドって新しく開発する時に完全に一つのコマンドがどのよ 1 2023/06/17 13:24
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・【お題】甲子園での思い出の残し方
- ・【お題】動物のキャッチフレーズ
- ・人生で一番思い出に残ってる靴
- ・これ何て呼びますか Part2
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・あなたが好きな本屋さんを教えてください
- ・かっこよく答えてください!!
- ・一回も披露したことのない豆知識
- ・ショボ短歌会
- ・いちばん失敗した人決定戦
- ・性格悪い人が優勝
- ・最速怪談選手権
- ・限定しりとり
- ・性格いい人が優勝
- ・これ何て呼びますか
- ・チョコミントアイス
- ・単二電池
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・泣きながら食べたご飯の思い出
- ・一番好きなみそ汁の具材は?
- ・人生で一番お金がなかったとき
- ・カラオケの鉄板ソング
- ・自分用のお土産
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バッチファイル 文字列にスペ...
-
バッチ終了時にDOS窓を閉じるコ...
-
コマンドプロンプトをクリック...
-
バッチファイルを使ってテキス...
-
findstrでヒットした1行前の文...
-
VisioのVBAでユーザにファイル...
-
Pythonで単純にファイルを結合...
-
バッチファイルで文字列を順番...
-
シェルの「:コマンドが見つか...
-
make test って何をするための...
-
ftpコマンド出力結果の取得
-
ショートカットをデスクトップ...
-
フォルダ、ファイル操作に最適...
-
【ファイルの同一性確認のため...
-
シェルからpsqlコマンドでトラ...
-
コードからアクセス権限の変更
-
startコマンドについて
-
コマンドプロンプトのバッチで...
-
VBSでタイマー
-
【LINUX】sudoコマンドについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチ終了時にDOS窓を閉じるコ...
-
バッチファイル 文字列にスペ...
-
シェルの「:コマンドが見つか...
-
コマンドプロンプトをクリック...
-
ftpコマンドを実行すると「425 ...
-
make test って何をするための...
-
findstrでヒットした1行前の文...
-
バッチファイルを使ってテキス...
-
Pythonで単純にファイルを結合...
-
ショートカットをデスクトップ...
-
FTPの連続実行でフリーズする
-
シェルからpsqlコマンドでトラ...
-
ftpコマンド出力結果の取得
-
バッチえファイルを編集するに...
-
フォルダ、ファイル操作に最適...
-
コマンドプロンプトで、特定の...
-
DOSコマンドに詳しい方、お知恵...
-
コマンドプロンプトでファイル...
-
コマンドプロンプトのバッチで...
-
AccessVBAで実行時間を指定する...
おすすめ情報