Linux板のシェルスクリプトスレ
ファイル操作する仕事があってシェルスクリプトを調べてたら発見しました。
ちょうど>>929のような行結合がやりたかったから助かった。
このスレは勉強になるので読みにいくようにしよう。
【sed】シェルスクリプト総合@LINUX Part2【awk】
929 名前:login:Penguin[sage] 投稿日:2007/07/05(木) 22:22:56 ID:S5Nm9zsS sedとawkじゃないかも知れないけど。 -hoge a b -fuga d e のようなファイルがあって、 -hoge a b -fuga d e のように出力出来ますか? csplitでファイル分割して、全てのファイルの改行を取れば出来るのですが、 中間ファイル作りたくないし、これが実現出来るコマンドがありそうな気がしたので。 930 名前:login:Penguin[sage] 投稿日:2007/07/06(金) 02:38:15 ID:Vt7J2m8C >>929 sed s/$/" "/ file.txt |tr -d "\n" |sed s/" -"/"\n-"/g|sed s/" $"// 行末にスペース | 改行を取り除く | "スペース-" の部分で改行 | 行末のスペースを取り除く 931 名前:login:Penguin[sage] 投稿日:2007/07/06(金) 06:23:05 ID:6aMK3M7p >>930 スパーハカー!なるほど!産休。 932 名前:login:Penguin[sage] 投稿日:2007/07/06(金) 09:36:03 ID:RB1MBV/1 sed 'N;N;s/\n/ /g' hoge これはあんまり一般的なやり方じゃねぇか? 933 名前:login:Penguin[] 投稿日:2007/07/06(金) 20:31:13 ID:zgIWnM6p GNU sedオンリーだったかな?・・・\n Linux板だからいーんじゃ? Unix板だとperl使えか? 934 名前:login:Penguin[sage] 投稿日:2007/07/06(金) 22:37:56 ID:d5hv1Ayr \nはPOSIXでも規定されているし大抵の環境で使える筈。 普通に考えれば>>932が順当。 935 名前:login:Penguin[sage] 投稿日:2007/07/06(金) 23:09:36 ID:eiWfMUpf じゃあ、順当じゃなく。 fmt hoge | tr '-' '\n-' 936 名前:login:Penguin[sage] 投稿日:2007/07/07(土) 01:22:38 ID:FIUQeagW cat /tmp/test.txt | gawk '/^-/ && NR!=1 {print""} {printf($0" ")} END{print""}' 937 名前:login:Penguin[sage] 投稿日:2007/07/07(土) 02:34:42 ID:Le67A90t >>929 awk で { if ($0 ~ /^\-/ && NR == 1) { printf("%s ", $0); } else if ($0 ~ /^\-/ && NR != 1) { printf("\n%s ", $0); } else { printf("%s ", $0); } } END { print ""; } 938 名前:login:Penguin[] 投稿日:2007/07/07(土) 08:39:22 ID:niJj2YwU >>937 状態遷移で改行の制御にしてみた BEGIN {nl=""} /^-/ {printf("%s%s", nl, $0);nl="\n";next} {printf(" %s", $0)} END {printf("\n")}