逆引きシェルスクリプト/文字列の長さを調べる方法
の編集
Top
/
逆引きシェルスクリプト
/
文字列の長さを調べる方法
[
トップ
] [
編集
|
差分
|
バックアップ
|
添付
|
リロード
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
-- 雛形とするページ --
(no template pages)
#navi(../) * 文字列の長さを調べる方法 [#ie493736] シェルスクリプトで文字列の長さを調べたい場合は、以下の方法で取得することができます。 #contents #htmlinsertpcsp(linux_ads_top.html,linux-sp.html) * 変数に格納されている文字列長を取得 [#n923e67e] ${#変数名} - 実行結果 $ hello="Hello world" $ echo ${#hello} 11 * 変数に格納されていない文字列長を取得 [#o0f3bf78] wcコマンドとexprコマンドを使用した2つの例を以下に記します。 ** 変数に格納されていない文字列長を取得・その1(wcコマンド編) [#s3906008] wcコマンドにより''バイト数''を取得できます。 - 実行結果~ echoコマンドの場合、改行コード分も含まれるので以下の実行結果となります。 $ echo "hello world" | wc -c 12 改行をしないように-nをつけると以下の実行結果となります。 $ echo -n "hello world" | wc -c 11 ** 変数に格納されていない文字列長を取得・その2(exprコマンド編) [#m13b9f71] exprコマンドにより文字列長を取得することもできます。 expr length 文字列 - 実行結果~ $ expr length "hello world" 11 * ファイル内の各行の文字列長を取得する [#o5cfffc3] 以下のようなファイル内容の場合の例を記します。 $ cat hello.txt HELLO WORLD KONNICHIWA NIHAO 以下、wcコマンドとexprコマンドを利用した2つの例を記します。 ** ファイル内の各行の文字列長を取得する(wcコマンド編) [#m94dce11] $ for L in `cat hello.txt` > do > echo $L | wc -c > done 6 6 11 6 HELLO と WORLDの間にスペースがあるため、分割して表示されてしまいます。~ IFSの値を変更し行単位で動作するようにします。 IFSの値を変更することにより、行単位で動作するようになります。~ 処理終了後、IFSの値をもとに戻しています。 $ for L in `cat hello.txt`; do echo $L | wc -c; done $ IFS_BACKUP=$IFS $ IFS=$'\n' $ for L in `cat hello.txt`; do echo $L | wc -c; done 12 11 6 $ IFS=$IFS_BACKUP 上記の場合だと、改行コード分のバイト数が含まれているので echo -n とすれば以下の結果となります。 $ IFS=$IFS_BACKUP $ IFS_BACKUP=$IFS $ IFS=$'\n' $ for L in `cat hello.txt`; do echo -n $L | wc -c; done 11 10 5 $ IFS_BACKUP=$IFS ** ファイル内の各行の文字列長を取得する(exprコマンド編) [#j80aec21] 上記のwcコマンド例と同様に、IFSを指定しないとスペースが区切り文字となってしまうので、IFSを設定して実行した結果です。~ 改行文字はカウントされていないのがわかります。 $ IFS_BACKUP=$IFS $ IFS=$'\n' $ for L in `cat hello.txt`; do expr length $L; done 11 10 5 $ IFS_BACKUP=$IFS * 関連記事 [#e7286b6d] - [[逆引きシェルスクリプト/スペースが含まれる文字列を1行として扱う方法]] - [[逆引きUNIXコマンド/整数演算を行う・exprコマンド]] #htmlinsertpcsp(linux_ads_btm.html,linux-sp.html)
タイムスタンプを変更しない
#navi(../) * 文字列の長さを調べる方法 [#ie493736] シェルスクリプトで文字列の長さを調べたい場合は、以下の方法で取得することができます。 #contents #htmlinsertpcsp(linux_ads_top.html,linux-sp.html) * 変数に格納されている文字列長を取得 [#n923e67e] ${#変数名} - 実行結果 $ hello="Hello world" $ echo ${#hello} 11 * 変数に格納されていない文字列長を取得 [#o0f3bf78] wcコマンドとexprコマンドを使用した2つの例を以下に記します。 ** 変数に格納されていない文字列長を取得・その1(wcコマンド編) [#s3906008] wcコマンドにより''バイト数''を取得できます。 - 実行結果~ echoコマンドの場合、改行コード分も含まれるので以下の実行結果となります。 $ echo "hello world" | wc -c 12 改行をしないように-nをつけると以下の実行結果となります。 $ echo -n "hello world" | wc -c 11 ** 変数に格納されていない文字列長を取得・その2(exprコマンド編) [#m13b9f71] exprコマンドにより文字列長を取得することもできます。 expr length 文字列 - 実行結果~ $ expr length "hello world" 11 * ファイル内の各行の文字列長を取得する [#o5cfffc3] 以下のようなファイル内容の場合の例を記します。 $ cat hello.txt HELLO WORLD KONNICHIWA NIHAO 以下、wcコマンドとexprコマンドを利用した2つの例を記します。 ** ファイル内の各行の文字列長を取得する(wcコマンド編) [#m94dce11] $ for L in `cat hello.txt` > do > echo $L | wc -c > done 6 6 11 6 HELLO と WORLDの間にスペースがあるため、分割して表示されてしまいます。~ IFSの値を変更し行単位で動作するようにします。 IFSの値を変更することにより、行単位で動作するようになります。~ 処理終了後、IFSの値をもとに戻しています。 $ for L in `cat hello.txt`; do echo $L | wc -c; done $ IFS_BACKUP=$IFS $ IFS=$'\n' $ for L in `cat hello.txt`; do echo $L | wc -c; done 12 11 6 $ IFS=$IFS_BACKUP 上記の場合だと、改行コード分のバイト数が含まれているので echo -n とすれば以下の結果となります。 $ IFS=$IFS_BACKUP $ IFS_BACKUP=$IFS $ IFS=$'\n' $ for L in `cat hello.txt`; do echo -n $L | wc -c; done 11 10 5 $ IFS_BACKUP=$IFS ** ファイル内の各行の文字列長を取得する(exprコマンド編) [#j80aec21] 上記のwcコマンド例と同様に、IFSを指定しないとスペースが区切り文字となってしまうので、IFSを設定して実行した結果です。~ 改行文字はカウントされていないのがわかります。 $ IFS_BACKUP=$IFS $ IFS=$'\n' $ for L in `cat hello.txt`; do expr length $L; done 11 10 5 $ IFS_BACKUP=$IFS * 関連記事 [#e7286b6d] - [[逆引きシェルスクリプト/スペースが含まれる文字列を1行として扱う方法]] - [[逆引きUNIXコマンド/整数演算を行う・exprコマンド]] #htmlinsertpcsp(linux_ads_btm.html,linux-sp.html)
テキスト整形のルールを表示する