1 名前:デフォルトの名無しさん [2005/04/04(月) 03:43:03 ] シェルスクリプトに関する質問・回答や議論等を行う相談室スレッド。
962 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 13:28:46 ] bashで while read LINE; do echo $LINE done < ファイル とするとファイルに含まれてるタブ文字が 半角スペースに変換されて表示されるのですが そのまま取り出したい場合どうすればいいのでしょう? cat ファイル | whileやfor LINE in `cat ファイル`等はやってみました
963 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 13:57:10 ] echo "$LINE"
964 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 14:05:16 ] >>963 うまくいきました ありがとう そんな単純な事に気づかなかったとはorz
965 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 21:30:18 ] KORNシェルの質問です。よろしくお願いします。 テキストファイル id=tanaka age=25 id=takahashi age=2 id=suzuki age=44 を id age --------------------- id=tanaka age=25 id=takahashi age=2 id=suzuki age=44 にしたい(体裁を整えたい)です。$@を使ってできますか? 変数wkにabc=e があったとして、=があるかどうかわかりますか? grepやcutコマンドは変数を対象に使えませんよね・・?
966 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 21:42:13 ] 訂正です。体裁が整ってない。 idなら10文字以下でもスペースで10文字にして(これはtypedef使いました) =の前を見出しに出力して、=の後を----の下に書きたいんです。 id age --------------------- tanaka 25 takahashi 2 suzuki 44 よろしくお願いします
967 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 23:25:03 ] IFS="=$IFS" FIRST=t while read line do set -- $line if [ "$FIRST" ] then printf "%-10s %s\n" "$1" "$3" echo "---------------------" FIRST= fi printf "%-10s %2d\n" "$2" "$4" done
968 名前:デフォルトの名無しさん [2008/06/30(月) 23:38:57 ] >>967 san 有難うございます!今試せないので明日、速攻でやってみます!
969 名前:デフォルトの名無しさん [2008/07/04(金) 23:36:23 ] 質問させてください。 diffの結果を見易く整形するツール等はありますでしょうか。 環境はCENTOSです。よろしくお願いします。
970 名前:969 mailto:sage [2008/07/04(金) 23:37:57 ] すいません。追記します。 シェルスクリプト内で使いたいので、 ツールでもコマンド的なものだとありがたいです。
971 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 00:17:24 ] diff -u
972 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 00:19:45 ] >>969 > diffの結果を見易く整形 kwsk
973 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 01:23:42 ] >972 このファイルだけサイズが違いますよとか このファイルはこっちにありませんよとかが希望です。 ls -Rlaの結果をファイルにリダイレクトしてます
974 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 07:42:01 ] ファイルの差分はいらないのね find dirA -exec wc -c {}; > /tmp/A find dirB -exec wc -c {}; > /tmp/B diff /tmp/A /tmp/B あるいは単純に diff -r --brief dirA dirB 2>&1
975 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 14:20:19 ] 私はこんなスクリプト作ってる。 -- #!/bin/sh -f DIFF="/bin/diff -u" lsd() { find $1 -type f -ls | awk '{printf("%10d %s %2s %5s %s\n", $7, $8, $9, $10, $11);}' | sort +4 } lsd $1 | sed -e "s- $1- $2-" > /tmp/$$ lsd $2 | $DIFF /tmp/$$ - rm /tmp/$$ -- これで一応ファイルサイズとタイムスタンプも比較できる。
976 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 23:59:08 ] >>975 ・空白のあるファイル名の扱い ・日付の出力形式の仮定 に問題。