質問編集履歴

3

gren

gren score 11

2019/08/06 09:49  投稿

2つのテキストファイルの中身を画面出力する際、合体するように出力したい。
質問する内容が非常に分かりづらくて申し訳ありません。テラタームでshellscriptにて、grepとwhile文を使って出力する処理を作っています。
①taro.txtとnames.txt
>taro.txt
太郎1 taro_001
太郎2 taro_002
太郎3 taro_003
……
太郎30 taro_030
>names.txt
taro_001 つよい かっこいい
jiro_001 すごい かっこいい
taro_002 すごい やさしい
while文を使って、taro.txtの行数文だけ、taro.txtとname.txtと比較して同じtaro_xxxの列を出力したい。また、出力する際、taro.txtの一番頭にある「太郎」も出力したいのですが、どのような処理を記載すればよいでしょうか…?
理想結果
太郎1 taro_001 つよい かっこいい
太郎2 taro_002 すごい やさしい
**※追記**
やったこと
while read line
 do
//太郎xを一番左に出力する処理
cat taro.txt | awk '{print substr($0,1,3)}'
cat names.txt | grep taro.txt
done >taro.txt
上記の方法だと
出力結果のnames.txtが出力されず、taro.txtのawkで取得したものをtaro.txtの行数文繰り返す処理になってしまっております。
 
1行目のtaro.txtの結果を変数に入れ  
taroOnly=cat taro.txt | awk '{print substr($0,1,3)}'  
ehco -e ''${taroOnly}'/t'  
ehco names.txt | grep -e ${taroOnly} '.....taro...'  
taro.txtの5行目以降を条件として取得したいのですが、上手くいけず…。  
 
2つの出力結果を1つに並べ、それをtaro.txtの行数文繰り返したいのですが、どのように変更すればよろしいでしょうか?
説明などが不足して大変申し訳ありませんでした。
  • sh

    500 questions

    shは、UNIX系OSのシェル操作の1つであり、最も基本的なシェルのことです。

2

gren

gren score 11

2019/08/06 09:24  投稿

2つのテキストファイルの中身を画面出力する際、合体するように出力したい。
質問する内容が非常に分かりづらくて申し訳ありません。テラタームでshellscriptにて、grepとwhile文を使って出力する処理を作っています。
①taro.txtとnames.txt
>taro.txt
太郎1 taro_001
太郎2 taro_002
太郎3 taro_003
……
太郎30 taro_030
>names.txt
taro_001 つよい かっこいい
jiro_001 すごい かっこいい
taro_002 すごい やさしい
while文を使って、taro.txtの行数文だけ、taro.txtとname.txtと比較して同じtaro_xxxの列を出力したい。また、出力する際、taro.txtの一番頭にある「太郎」も出力したいのですが、どのような処理を記載すればよいでしょうか…?
理想結果
太郎1 taro_001 つよい かっこいい
太郎2 taro_002 すごい やさしい
※追記
**※追記**
やったこと
while read line
 do
//太郎xを一番左に出力する処理
cat taro.txt | awk '{print substr($0,1,3)}'
cat names.txt | grep taro.txt
done >taro.txt
上記の方法だと
出力結果のnames.txtが出力されず、taro.txtのawkで取得したものをtaro.txtの行数文繰り返す処理になってしまっております。
説明などが不足して大変申し訳ありませんでした。
  • sh

    500 questions

    shは、UNIX系OSのシェル操作の1つであり、最も基本的なシェルのことです。

1

gren

gren score 11

2019/08/06 09:23  投稿

2つのテキストファイルの中身を画面出力する際、合体するように出力したい。
質問する内容が非常に分かりづらくて申し訳ありません。テラタームでshellscriptにて、grepとwhile文を使って出力する処理を作っています。
①taro.txtとnames.txt
>taro.txt
太郎1 taro_001
太郎2 taro_002
太郎3 taro_003
……
太郎30 taro_030
>names.txt
taro_001 つよい かっこいい
jiro_001 すごい かっこいい
taro_002 すごい やさしい
while文を使って、taro.txtの行数文だけ、taro.txtとname.txtと比較して同じtaro_xxxの列を出力したい。また、出力する際、taro.txtの一番頭にある「太郎」も出力したいのですが、どのような処理を記載すればよいでしょうか…?
理想結果
太郎1 taro_001 つよい かっこいい
太郎2 taro_002 すごい やさしい
太郎2 taro_002 すごい やさしい
※追記
やったこと
while read line
 do
//太郎xを一番左に出力する処理
cat taro.txt | awk '{print substr($0,1,3)}'
cat names.txt | grep taro.txt
done >taro.txt
上記の方法だと
出力結果のnames.txtが出力されず、taro.txtのawkで取得したものをtaro.txtの行数文繰り返す処理になってしまっております。
2つの出力結果を1つに並べ、それをtaro.txtの行数文繰り返したいです。
説明などが不足して大変申し訳ありませんでした。
  • sh

    500 questions

    shは、UNIX系OSのシェル操作の1つであり、最も基本的なシェルのことです。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る