シェルでgrepは、特定文字列を含む行を抜き出すときに使いますよね。

特定の文字列を含むフィールドを取り出すときはどうしますか。
(grepでなくていいです)

たとえば、

abc def ghi klm nop

という文字列に対して、
「d」を含むフィールドを取り出す
をしたいです。

STR=`echo "abc def ghi klm nop" | XXX `

としたときに、${STR}に def が入るような「XXX」のコマンドは
ありますか。

シェルでは、あまり見かけない方法なので、難易度高いかもしれませんが、
よろしくお願いいたします。

A 回答 (4件)

echo "abc def ghi klm nop" | tr ' ' '\n' | grep d | hea

d -n 1
    • good
    • 0

>何フィールド目か、わかっている場合の



ああ、確かに。
そこ抜けてた。

No.2さんの方法で、sedの代わりにtrコマンドでも行けるかもですね。
    • good
    • 0

echo "abc def ghi klm nop" | sed -e 's/[ ]/\n/g' | grep

d | head -n 1
    • good
    • 0
この回答へのお礼

完璧な回答、ありがとうございます。

無事にできました。

お礼日時:2017/06/18 11:14

cutですかね?


awkで取り出すこともありますけど。
    • good
    • 0
この回答へのお礼

awk をうまく使えば出来そうだなと思って調べたのですが、
何フィールド目か、わかっている場合の処理の説明しか
見当たらなかったんです。

お礼日時:2017/06/18 11:15

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aと関連する良く見られている質問

Q一般ユーザでsudoが実行できない

一般ユーザーで「 sudo yum -y install git」と打つと、パスワードを打つように要求されるので、パスワードを打ちますと、「XXXXX は sudoers ファイル内にありません。この事象は記録・報告されます。」と帰ってきて実行ができませんでした。

ネットで検索してみますと、「一般ユーザでsudoが実行できない場合(http://qiita.com/ume_tomo/items/71861a7797d5f5f12b2b)」があり、表示されている文言も全く同じでしたので、実行しようとしましたが、実行手順の通りの内容ではありませんでした。

私の環境は「CentOS7」で「VMware」なのが原因なのかもしれません。

また、「CentOS7」と記載された以下の2点も参考に見てみましたが、現在の私では応用するような力がありません。

どのようにしたら、「XXXXX を sudoers ファイル内に入れる」事ができるのか教えていただけないでしょうか。よろしくお願いします。

なおユーザーは、私一人です。

  記
CentOS 7 : 初期設定 : Sudo を設定する (https://www.server-world.info/query?os=CentOS_7&p=initial_conf&f=8)

CentOS7のユーザ追加とsudoの設定 - cublog (http://cublog.hateblo.jp/entry/2016/03/17/132521)

一般ユーザーで「 sudo yum -y install git」と打つと、パスワードを打つように要求されるので、パスワードを打ちますと、「XXXXX は sudoers ファイル内にありません。この事象は記録・報告されます。」と帰ってきて実行ができませんでした。

ネットで検索してみますと、「一般ユーザでsudoが実行できない場合(http://qiita.com/ume_tomo/items/71861a7797d5f5f12b2b)」があり、表示されている文言も全く同じでしたので、実行しようとしましたが、実行手順の通りの内容ではありませんでした。

私の環境は「...続きを読む

Aベストアンサー

ご使用されている CentOS7 は 64bit版でしょうか?
64bit版では wheel グループの動作に問題があるようです。
なので、もし 64bit版をご使用でしたら、ユーザー個別に sudo の使用許可を与えるようにする必要があると思います。

QLinuxで仮想環境を構築できない。

Virtual boxを使用して、仮想環境を構築しようと考えているのですが、出来ませんでした。
下記の手順で、どこが間違っているか教えてください。
1.virtual boxをインストールする。ディレクトリ E\virtualbox
Eは、外付けのHDDです。
2.ubuntu-ja-12.04-desktop-i386をE:にインストール
3.virtual boxを開き、新規作成、名称ubuntu12.04 OS:linux メモリーサイズ900MB 可変サイズ:
4.ストレージ、コントローラーIDEの箇所に、ubuntu12.04のISOイメージを指定
5.起動、

5以降で、確か、vhdかdiskの選択画面で、vhdを指定
すると、真っ暗な画面に、キャプチャの説明が入り、それを閉じると
FATAL:No bootable medium found! System halted.
というエラー表示です。

こちらを解決しようとしているのですが、出来ません。
解決方法を教えてください。

Aベストアンサー

『ISOを作るソフトで、ubuntu-ja-12.04-desktop-i386のISOイメージを作成』の部分で失敗していると思います。
Linuxのインストールイメージファイルは、普通にインターネットから取得する場合、取得した時点で(ブータブルな)ISOファイルですので、加工は必要ありません。
ヘタな加工を行うと、ISOファイル一つだけを含むブータブルでないISOファイルを作るのがオチです。

あとUbuntuのバージョンですが、12.04はこの4月でサポートが切れるので、今からやるならせめて14.04にしましょう。CPUが64bit対応なら、64bitでも負荷の差は大してないので16.04にしておくのも手です。
日本語版ISOの所在 https://www.ubuntulinux.jp/download/ja-remix

QLinux ServerでOutlookのメールができるのですか?

毎日使っているOutlookのメールですが、ServerはLinuxと言っていました。
ふと今疑問に思ったのですが、Outlookでメールする場合、Linux Serverは対
応しているのでしょうか?
宜しくお願いします。

Aベストアンサー

No.1です。

メール通信には国際基準があって、
それに基づいて、サーバーや端末(PCやスマホ等)のメールソフトが設計されています。
サーバーとメールソフトは直接には連携せず、国際基準が仲介しています。
なので、下記ご質問は、「yes」です。

==================== 
私のOutlookから見て送受信(SMTPとPOP3)されたメールは私の所属しているLinuxサーバが取
り次ぐことが出来るから、可能である。
 世界で普及しているメールサーバはメーラの種類は関係なくメールの送受信が可能です。
====================

Qシェルスクリプトでエラーが出ます

#!/bin/bash

FILE_U="/home/samba/mail_add.txt"
FILE_P="/etc/passwd"

newusers $FILE_U

for line in `cat $FILE_U`
do
user_name=`echo $line | cut -d ':' -f 1`
pass=`echo $line | cut -d ':' -f 2`
txt=`cat $FILE_P | grep -e "^$user_name:"`
user_id=`echo $txt | cut -d ':' -f 3`
group_id=`echo $txt | cut -d ':' -f 4`
home_dir=`echo $txt | cut -d ':' -f 6`
##パスワード生成
PASSWORD=`perl -e "print(crypt('${pass}', 'a5'));"`
useradd -u ${user_id} -g ${group_id} -d ${home_dir} -m -p ${PASSWORD} ${user_id}
cp -rf /etc/skel/* $home_dir/
chown -R $user_id $home_dir
chmod 711 $user_id $home_dir
chgrp -R $group_id $home_dir
echo -n > /home/$user_name/.forward
echo '\'$user_name >/home/$user_name/.forward
echo '|/usr/local/bin/mailtrans.php' >>/home/$user_name/.forward
done

あるサイトで発見したシェルスクリプトを参考にして、少し修正しました。
Centos7ではエラーも無く上手くできましたが、
RedHat7.3で実行すると、下記のエラーが出て、ユーザー登録ができません。
Centos7とRedHat7.3のシェルスクリプトの書き方は違うのでしょうか?

newusers: 1 行: 不正な行です
newusers: 2 行: 不正な行です
newusers: 3 行: 不正な行です
newusers: 4 行: 不正な行です
newusers: 5 行: 不正な行です
newusers: エラーが検出されました。変更は行いません
useradd: '-g' はユ−ザ ID に使えません
chown: オペランドがありません
Try 'chown --help' for more information.
chmod: `711' の後にオペランドがありません
Try 'chmod --help' for more information.
chgrp: オペランドがありません
Try 'chgrp --help' for more information.
/usr/local/bin/users_add.sh: 行 23: /home/t-hayashi3109/.forward: そのようなファイルやディレクトリはありません
/usr/local/bin/users_add.sh: 行 24: /home/t-hayashi3109/.forward: そのようなファイルやディレクトリはありません
/usr/local/bin/users_add.sh: 行 25: /home/t-hayashi3109/.forward: そのようなファイルやディレクトリはありません

使ったtxtファイルは以下です。
t-aaaaa:t-aaaaa3109L:::t-aaaaa3109:/home/t-aaaaa3109:/bin/bash
t-bbbbb:t-bbbbb3114L:::t-bbbbb3114:/home/t-bbbbb3114:/bin/bash
t-ccccc:t-ccccc4233L:::t-ccccc4233:/home/t-ccccc4233:/bin/bash
n-ddddd:n-ddddd9992L:::n-ddddd9992:/home/n-ddddd9992:/bin/bash
y-eeeee:y-eeeee2704G:::y-eeeee2704:/home/y-eeeee2704:/bin/bash

「sh chmod: `711' の後にオペランドがありません」等で検索したのですが、思うような情報がヒットしませんでした。
どなたか、力を貸していただけないでしょうか。
よろしくお願いします。

#!/bin/bash

FILE_U="/home/samba/mail_add.txt"
FILE_P="/etc/passwd"

newusers $FILE_U

for line in `cat $FILE_U`
do
user_name=`echo $line | cut -d ':' -f 1`
pass=`echo $line | cut -d ':' -f 2`
txt=`cat $FILE_P | grep -e "^$user_name:"`
user_id=`echo $txt | cut -d ':' -f 3`
group_id=`echo $txt | cut -d ':' -f 4`
home_dir=`echo $txt | cut -d ':' -f 6`
##パスワード生成
PASSWORD=`perl -e "print(crypt('${pass}', 'a5'));"`
use...続きを読む

Aベストアンサー

sh chmod: `711' の後にオペランドがありません
 ということは
chmod 711
 というコマンドを実行した、ということです。
※ オペランド(被演算子)とは https://ja.wikipedia.org/wiki/%E8%A2%AB%E6%BC%94%E7%AE%97%E5%AD%90

そこから逆算すると
chmod 711 $user_id $home_dir
の $user_id も $home_dir も空ではないか、ということが予測付きます。
そう仮定すると
useradd -u ${user_id} -g ${group_id} -d ${home_dir} -m -p ${PASSWORD} ${user_id}
 が
useradd -u -g -d -m -p
 となって、 -u の引数として -g が指定されている、となるので
useradd: '-g' はユ−ザ ID に使えません
 となるのも納得できます。
※ シェルスクリプトでは、変数展開やファイル転換が終わった最後の状態で、コマンドを実行します。

そこから逆算すると
user_id=`echo $txt | cut -d ':' -f 3`
が期待通りの結果になっていない、ということです。
ということは、
・$txt が不正
・cut コマンドが不正
が考えられます。
ここで、デバッガを使ったり、$txtを出力したりするれば、状況がわかるはずです。


newusers: 1 行: 不正な行です
 と出ていることから、
/home/samba/mail_add.txt
がなにか期待と違うものになっていて、 newusersでエラーになっているようです。

その後の
txt=`cat $FILE_P | grep -e "^$user_name:"`
でpasswdファイルから取り出そうにもnewusersがエラーだったので該当エントリーが無いから、$txtも空→user_id等も空となっているのでしょう。


/home/samba/mail_add.txt を徹底的に確認するのが、まず第一歩です。

sh chmod: `711' の後にオペランドがありません
 ということは
chmod 711
 というコマンドを実行した、ということです。
※ オペランド(被演算子)とは https://ja.wikipedia.org/wiki/%E8%A2%AB%E6%BC%94%E7%AE%97%E5%AD%90

そこから逆算すると
chmod 711 $user_id $home_dir
の $user_id も $home_dir も空ではないか、ということが予測付きます。
そう仮定すると
useradd -u ${user_id} -g ${group_id} -d ${home_dir} -m -p ${PASSWORD} ${user_id}
 が
useradd -u -g -d -m -p
 となって、 -u の引数...続きを読む

QLinuxのインストールに関して

昨日日経BPのLinuxの本を買ってきて、付属のCDからインストールしようとしたのですが、フォルダがいくつもありどれをクリックすれば良いのか困っています。

Linux初心者ですが、古いパソコンで愛着があるパソコンなのでなんとか使用したいと思っています。

よろしくお願いします。

Aベストアンサー

Lubuntuは、「Ubuntu」というLinuxから派生したものなのですが、Ubuntuは、近年非常にホットで、ファンも多いLinuxですが、比較的歴史が浅く、まだ粗削りな部分も持ち合わせています。

当該の本が、Lubuntuを基準に書かれているのでしたら、Lubuntuを使わざるを得ないですが、他にも、Debianや、OpenSUSE(SUSE)等、安定したLinuxがありますので、いつか機会があれば試してみてください。

RedHat系も安定しているかと思いますが、私はあまり使わないのでそこはよく分からないです。

人に例えるなら、Ubuntuは元気な若者で、Debianはどっしりとした長老のような感じで、SUSEは落ち着いた中年のようなイメージです。

■ Linux ディストリビューション タイムライン(年表)
https://upload.wikimedia.org/wikipedia/commons/1/1b/Linux_Distribution_Timeline.svg


個人的には、一番洗練されているのはSUSEだと思いますが、それなりに重いので、低スペックのPCには向かないかと思います。

Debianは、重くも軽くもない中間だと思いますが、先進的というよりは、非常に抑えたシンプルな構成になっています。


Linuxは本当に種類が多いので、気になったLinuxがあれば、そのサイトからISOイメージファイル(ディスクの中身を1つのファイルにまとめたもの)をダウンロードし、空のCD-RやDVD-R等に、イメージファイルの書き込みモードで書き込み、完成したディスクを使って、パソコンにLinuxをインストールしてみると良いかと思います。


CD-RやDVD-Rを焼くのがもったいないという場合は、「UNetbootin」という、ダウンロードしたISOイメージファイルの中身を、USBメモリに書き出して、起動可能なUSBメモリを作成するツールがありますので、そのISOイメージファイルが入るだけの容量のUSBメモリ(8GBあれば十分)を用意し、それを利用されると良いかと思います。

■ あらゆるOSのLiveUSBを作成することができる「UNetbootin」
https://blog.halpas.com/archives/7437


PCにインストールせずにLinuxを試したい場合は、「VirtualBox」という仮想マシンソフトがありますので、Windows上でそれを使って、Linuxをシミュレーションでインストールしてみると良いかと思います。

■ 【初心者でもわかる】VirtualBoxインストール方法を詳しく!
https://eng-entrance.com/virtualbox-install


又、近年のLinuxのインストールメディアは、ライブとして実行する(インストールせずに試す)事が出来るものが増えてきましたので、そのモードで起動すると大体の雰囲気は分かるかと思います。

ただ、ライブも、仮想マシンも、実際にパソコンにインストールした時のパフォーマンスは発揮出来ませんから、本当の動作スピードは、実際にインストールしてみないと体感出来ませんので、気に入ったものは実際にインストールしてみると良いかと思います。

Lubuntuは、「Ubuntu」というLinuxから派生したものなのですが、Ubuntuは、近年非常にホットで、ファンも多いLinuxですが、比較的歴史が浅く、まだ粗削りな部分も持ち合わせています。

当該の本が、Lubuntuを基準に書かれているのでしたら、Lubuntuを使わざるを得ないですが、他にも、Debianや、OpenSUSE(SUSE)等、安定したLinuxがありますので、いつか機会があれば試してみてください。

RedHat系も安定しているかと思いますが、私はあまり使わないのでそこはよく分からないです。

人に例えるなら、Ubuntuは...続きを読む

Qシェルスクリプトで一括作成したユーザーのパスワードが使えません

下記のようなシェルスクリプトを使ってユーザーを一括登録しました。
ユーザーのフォルダが作成されました。/etc/passwdと/etc/shadowには追加されています。
しかし、作成したユーザーでログインしようとすると、「パスワードが違います。」とメッセージが出てログインできません。
下のスクリプトのパスワード作成の方法が違っていて、予想もしないようなパスワードが作成されてしまっているのでしょうか。
それとも、パスワードを有効にする処理を追加しなければいけないのでしょうか。
もし、パスワードを有効にする処理が必要なら、どのようにしたらいいのでしょうか。
どなたか、お知恵を拝借できないでしょうか。お願いします。

シェルスクリプトの内容
#!/bin/bash

FILE_U="/home/samba/mail_add.txt"
FILE_P="/etc/passwd"

newusers $FILE_U

for line in `cat $FILE_U`
do
user_name=`echo $line | cut -d ':' -f 1`
pass=`echo $line | cut -d ':' -f 2`
txt=`cat $FILE_P | grep -e "^$user_name:"`
user_id=`echo $txt | cut -d ':' -f 3`
group_id=`echo $txt | cut -d ':' -f 4`
home_dir=`echo $txt | cut -d ':' -f 6`
##パスワード生成
PASSWORD=`perl -e "print(crypt('${pass}', 'a5'));"`
useradd -u ${user_id} -g ${group_id} -d ${home_dir} -m -p ${PASSWORD} ${user_id}
cp -rf /etc/skel/* $home_dir/
chown -R $user_id $home_dir
chmod 711 $user_id $home_dir
chgrp -R $group_id $home_dir
done

/etc/passwdの内容
t-hayashi3109:x:1002:1002:t-hayashi3109:/home/t-hayashi3109:/bin/bash
t-fujihara3114:x:1003:1003:t-fujihara3114:/home/t-fujihara3114:/bin/bash
t-takejima423:x:1004:1004:t-takejima423:/home/t-takejima423:/bin/bash
n-kishita999:x:1005:1005:n-kishita999:/home/n-kishita999:/bin/bash
y-kawase270:x:1006:1006:y-kawase270:/home/y-kawase270:/bin/bash

/etc/shadowの内容
t-hayashi3109:$6$IMrX/4SsD4$J0MTnXOhBR3HWfmtdptRkue/wmaWNrnx4lsahchwxBZIVDJvew3XHYXzi89o/ds18AmiTi9WRg4TJhXH66LMG1:17218:0:99999:7:::
t-fujihara3114:$6$cF90/Zk/sE43sq$I/c5IJWdIleNCjQp13uLyn/eHWxQMfZNjyLE7bjfkGswdb.q46VvqV8uAXzIZUdhc8zJW9BSnhrMc.eBIvdyP0:17218:0:99999:7:::
t-takejima423:$6$b0I4T4EbexUig2$0ouOYWtnPAZMz1YKNLrOsyG1RYkJhSS1OnSvkdIR97Cr0d5JOpM3Dg9F.MfVF957QPmuFgmE8N9avPx2XChB31:17218:0:99999:7:::
n-kishita999:$6$eAlJ9dMM$Mt2tL.TqJ/A0cXk3eAs/5ids.6iDtcy339YNRacEZZcfaMUIEcUkRcXoD..vw0quA1ezQlQbhxL5sXmmGTGYc.:17218:0:99999:7:::
y-kawase270:$6$hw44olqmQE/u2$2j9Sit5Bgr3XgYcVETyG4ahzEYQ5WHJgN9PrYoNYqieFbyMmt1qCuSunuZ8Mwo35rln7nTY3U7j8PGXyD33XJ/:17218:0:99999:7:::

下記のようなシェルスクリプトを使ってユーザーを一括登録しました。
ユーザーのフォルダが作成されました。/etc/passwdと/etc/shadowには追加されています。
しかし、作成したユーザーでログインしようとすると、「パスワードが違います。」とメッセージが出てログインできません。
下のスクリプトのパスワード作成の方法が違っていて、予想もしないようなパスワードが作成されてしまっているのでしょうか。
それとも、パスワードを有効にする処理を追加しなければいけないのでしょうか。
もし、パスワード...続きを読む

Aベストアンサー

>chmod: `t-hayashi3109' にアクセスできません: そのようなファイルやディレクトリはありません

に関しては、
>chmod 711 $user_name '/home/'$user_name'/'
が誤りです。
最初の$user_nameは不要です。

>pass=`echo $line | cut -d ':' -f 2`
>##指定されたパスワードを渡す
>echo $pass | passwd --stdin $user_name

恐らく不要です。
/etc/login.defsで
ENCRYPT_METHOD SHA512
になっていれば、newusersコマンドで作成されるパスワードハッシュはSHA512になっていると思われます。
# /etc/shadowの第2フィールドが$6$になっているかと。

>[root@mailsv02 ~]# su t-hayashi3109
>: そのようなファイルやディレクトリはありません

rootからのsuだとパスワードなしでも通るので、確認には不向き…かと思われます。

1つ前の質問で改行コードについて確認しましたけど…その辺りどうです?
ちなみに、それぞれ改行コードを変えているとfileコマンドで下記の様な結果になります。
[user@localhost ~]$ file mail_add_CRLF.txt
mail_add_CRLF.txt: ASCII text, with CRLF line terminators
[user@localhost ~]$ file mail_add_LF.txt
mail_add_LF.txt: ASCII text

CRLFがWindowsで標準に使われる改行コード、LFがLinuxで標準に使う改行コードです。
/home/samba
ということなので、mail_add.txtはWindowsで編集してsambaで転送したのではありませんか?
そうすると、ユーザのシェル指定が"/bin/bash"ではなく"/bin/bash\r"(\rはCR)になります。
# FTPのASCIIモード以外では変換してくれませんので、Windowsのエディタで改行コードをLFに指定するか、Linuxに移した後で改行コードの変換が必要です。
で、シェルが"/bin/bash\r"の場合に…
>[user@localhost ~]$ su - t-hayashi3109
>パスワード:
>: そのようなファイルやディレクトリはありません
となりました。

[root@localhost ~]# file /etc/passwd
/etc/passwd: ASCII text, with CRLF, LF line terminators
ということで、/etc/passwdがCRLF混じりのファイルになっているかと。

trコマンドで改行コード中のCRは削除できるので、それで置き換える…という方法で回避できるかと思われます。
[root@localhost ~]# tr -d \\r < /etc/passwd > /etc/passwd1
[root@localhost ~]# cp /etc/passwd1 /etc/passwd
cp: `/etc/passwd' を上書きしますか? y
のように一時ファイルに書き出してから更新する…とか。
# リダイレクトでやる場合は『入力ファイル』と『出力ファイル』を同じにすると問題が発生する場合があるのでご注意を。
http://osksn2.hep.sci.osaka-u.ac.jp/~taku/osx/crlf.html

>chmod: `t-hayashi3109' にアクセスできません: そのようなファイルやディレクトリはありません

に関しては、
>chmod 711 $user_name '/home/'$user_name'/'
が誤りです。
最初の$user_nameは不要です。

>pass=`echo $line | cut -d ':' -f 2`
>##指定されたパスワードを渡す
>echo $pass | passwd --stdin $user_name

恐らく不要です。
/etc/login.defsで
ENCRYPT_METHOD SHA512
になっていれば、newusersコマンドで作成されるパスワードハッシュはSHA512になっていると思われます。
# /etc/shadowの第2フィ...続きを読む

QLinuxのルート設定をする

本見たところ、linuxをインストール後、起動時,
シェルが自動的に立ち上がると表記されていたのですが、
立ち上がらず、GUIから立ち上げるしかないと思ったのですが、
bashアプリケーションをダブルクリックも起動しませんでした。
ルートを設定していないので、まず、こちらが先かと思ったのですが、
シェルが使えないということと、rootのアプリケーションに×が表示され、ダブルクリックも
起動しません。
解決方法、アドバイス お願い致します。

Aベストアンサー

まあ、いろいろ回答ついているんですが……。


>本見たところ、linuxをインストール後、起動時,
>シェルが自動的に立ち上がると表記されていたのですが、

参照した本とやらはどんなのでしょうか?

>立ち上がらず、GUIから立ち上げるしかないと思ったのですが、

インストールしたディストリビューションはなんでしょうか?
Ubuntu Desktopだと普通にインストールするとGUIが起動しますし、Ubuntu Serverだと普通にインストールした場合はCUIです。
# ログインした後でログインシェル(デフォルトならbashですかね)が起動します。

>bashアプリケーションをダブルクリックも起動しませんでした。

エラーもなにも表示されませんでしたか?
というかbashアプリケーションってなんでしょう?
シェルスクリプト? ファイルマネージャなりでbash本体起動したんですかね?

QWindows serverをCentOSにインストールしたいです。

現在WindowsPCにWindows server 2008をインストールしようとしているのですがCentOSの画面からCD-ROMを読み込みWindows server 2008をインストールする事はできるのでしょうか?

現在の状況
・CentOSしか入っていないPCにWindows serverをインストールしようとしている。
・Windows server 2008のインストールが完了したらCentOSを消去しようとしている。
・CentOSでCD-ROM(Windows server 2008)を入れた際、認識はされているみたいなのですが、通常CD-ROMを入れた際自動でインストーラーが起動すると思うのですが自動で起動しないので困っている。

御教授お願い申し上げます。

Aベストアンサー

CentOSで起動し、Windows server 2008のCD-ROMをセットしたらシステムを再起動してください。
CentOSがインストールされているので起動の際に「Press any key to boot from CD or DVD...」といったメッセージが出ると思います。表示されている間にキーボードのEnterキーを押してください。

そうするとWindows server 2008のインストール画面が出ませんか?

参考まで。

QUbuntuでシリアルポートのopen、read、writeに関する質問

下記のコードを実行しますと、次の表示が出てデバイスが認識されます。

次にopenしたいわけですが、open出来ません。
ボーレートとかが設定されてないためか?

name:ttyUSB0 <---デバイスが認識されます。
Description:USB - Serial
Manufacturer:FTDI


Q1) 何とかオープン出来る方法があればお教えください?
この様な、簡単なコードでは旨く行かないのでしょうか?
尚、USBケーブルの先に、FTDIのuartのチップがついています。


#include <QtSerialPort/QSerialPort>
#include <QtSerialPort/QSerialPortInfo>

void MainWindow::on_pushButton_clicked()
{
QString str;
//availablePorts()で利用可能なすべてのシリアルポートが取得できる
foreach (const QSerialPortInfo &info, QSerialPortInfo::availablePorts()) {


str=QString("name:%1").arg(info.portName());
qDebug("%s",qPrintable(str));
str=QString("Description:%1").arg(info.description());
qDebug("%s",qPrintable(str));
str=QString("Manufacturer:%1").arg(info.manufacturer());
qDebug("%s",qPrintable(str));

// Example use QSerialPort
QSerialPort serial;
serial.setPort(info);
if (serial.open(QIODevice::ReadWrite)){ <ーーーopen出来ません============
qDebug("Serial port opened");
serial.close();
qDebug("Serial port opened");
}
else{
qDebug("Serial port not opened");

}
}

}

以上宜しくお願いします。

下記のコードを実行しますと、次の表示が出てデバイスが認識されます。

次にopenしたいわけですが、open出来ません。
ボーレートとかが設定されてないためか?

name:ttyUSB0 <---デバイスが認識されます。
Description:USB - Serial
Manufacturer:FTDI


Q1) 何とかオープン出来る方法があればお教えください?
この様な、簡単なコードでは旨く行かないのでしょうか?
尚、USBケーブルの先に、FTDIのuartのチップがついています。


#include <QtSerialPort/QSerialPort>
#include <QtSerialPo...続きを読む

Aベストアンサー

Qtだとか、Ubunutuでのプログラミングとかやったことありませんけど。


>ボーレートとかが設定されてないためか?

http://doc.qt.io/qt-5/qserialport.html#baudRate-prop
とか、設定方法はドキュメントにあるようですけど。


>次にopenしたいわけですが、open出来ません。

http://doc.qt.io/qt-5/qserialport.html#open

error()で何らか情報取れる…みたいですが試してみましたか?
http://doc.qt.io/qt-5/qserialport.html#SerialPortError-enum
のどれかの値で判別できるようですが。

Qgrepの使い方

OSはCentOS6.6です。
メールアドレスの書かれたシェルスクリプトを探そうと、
grep -n 'aaa@bbb.jp' *.sh
とコマンドを叩くと
grep: *.sh: そのようなファイルやディレクトリはありません
と返されます。

grep [オプション] パターン ファイル
にはなっていると思っていますが、何が間違っているのでしょうか?

Aベストアンサー

>grep -r 文字列 /*
>試してみましたが、なにもヒットしませんでした。

grep --help
とか
man grep
とかでヘルプが見られると思いますけど……。

grep 文字列 -r 検索するディレクトリ
となるでしょうから
grep 文字列 -r /
ではないですかね?

メールアドレスが固定でないのであれば、正規表現で…ということになりますが。
「grep メールアドレス 正規表現」辺りで検索して下さい。
# 秀丸で~とかそういうのが引っかかったりする場合もあるやも知れませんが。
# http://eng-entrance.com/linux-regular-expression#i-15 とかですかねぇ…-Pオプションの有無は上記の方法で確認して下さい。
# http://qiita.com/linux-fun/items/c9fcdd30ae58bd988ed1 とか。
# http://qiita.com/KTakata/items/bcce3b6bafe84f008000 とか。

バイナリファイルに対しても引っかかる場合があるので、その辺りはよろしく処理した方がいいでしょう。

対象はシェルではないですが、上記のパターンで試したものは……
grep -E '[a-zA-Z0-9_\.\-]+?@[a-zA-Z0-9_\.\-]+' -r /usr/share/doc
ってところで。

>grep -r 文字列 /*
>試してみましたが、なにもヒットしませんでした。

grep --help
とか
man grep
とかでヘルプが見られると思いますけど……。

grep 文字列 -r 検索するディレクトリ
となるでしょうから
grep 文字列 -r /
ではないですかね?

メールアドレスが固定でないのであれば、正規表現で…ということになりますが。
「grep メールアドレス 正規表現」辺りで検索して下さい。
# 秀丸で~とかそういうのが引っかかったりする場合もあるやも知れませんが。
# http://eng-entrance.com/linux-regular-express...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報