![]() |
Helloやアメリカ合衆国へようこそ! UNIXおよびLinuxフォーラム!訪問し、当社のグローバルコミュニティに参加いただきありがとうございます。
|
|
Googleのunix.com
|
|||||||
| シェルプログラミングとスクリプティング KSH 、 CSH 、 shに、 bashの、はPerl 、 PHPは、削除するsed 、 Awkの、他のシェルスクリプトやシェルスクリプト言語についての質問の投稿はこちら。 |
その他のUNIXおよびLinuxフォーラムトピックは参考にすること
|
||||
| スレッド | スレッドスターター | フォーラム | 返信 | 最後の投稿 |
| SSHの問題 | ysk | UNIXの詳細&エキスパートのためのユーザー | 1 | 2007年7月19日 06:16午前 |
| 問題のAIXおよびSAN 。 | fjgonzalez | AIX | 4 | 2007年7月18日 06:15午後 |
| との問題Last | By_Jam | UNIXの詳細&エキスパートのためのユーザー | 3 | 2006年9月29日 04:12午前 |
| いくつかの問題 | vivekshankar | UNIXのダミー質問と回答のため | 3 | 2005年5月21日 01:26午後 |
| ' 'を作る問題( compliation問題? ) | xyyz | UNIXの詳細&エキスパートのためのユーザー | 5 | 2001年11月5日 10:47午後 |
![]() |
|
|
LinkBack | スレッドツール | このスレッドを検索 | スレッドを評価 | 表示モード |
|
|
|
||||
|
カットでの問題
こんにちはすべて、
0680046755000011 3040249 3005930 60180GPRS4Samsung_SGH_Z500 これは私のログファイルとログのためのパラメータファイルの形式は似ている •最初の10文字: MSISDN • 6次の文字:時 • 18次の文字:番号SAのソース • 18次の文字:番号SAの目的地 私は私の第1 、第2 colums.Iの間に次の6文字(ホワイトスペースを含む文字fitst 10次の18文字を削減する必要があります) 11空白があります。私は以下のコードで試した メートルSISDN \u003d ` $データ|カットエコーc1 - 10 ` 時間\u003d ` $データ|カット- C11をエコー- 16 ` ID_SA_SOURCE \u003d ` $データ|カットエコーc17 - 35 ` ID_SA_DEST \u003d ` $データ|カットエコーc36 - 54 ` しかし、それが正常に切断されていません..空白のbecosいずれかの代替案を提案することができます Thnks |
|
||||
|
引用:
コード:
HOUR=`echo $data | tr -s " " |cut -c11-16` |
|
||||
|
引用:
コード:
id=`echo 0680046755000011 3040249 3005930 60180GPRS4Samsung_SGH_Z500 | tr -s " " |cut -c17-35` output is --- 3040249 3005930 60 |
|
||||
|
やあ、
実際には、ログファイルのようなものです 0608166896000001私の最初の列で11空白と3001339私の2列目( 3001339 )を11で空白と 3204235私の3番目のcoumn 。 ... しかし、次のコード行を使用してラインを読む 一方のデータを読む する エコーデータ$データ ID_SA_SOURCE \u003d ` $データ|カットエコーc17 - 35 ` ID_SA_SOURCE $ ID_SA_SOURCEエコー 実行< $ TRACKING_LOGDIR / $ listdata 私は" "私の代わりにスペースを1つの変数のみです..私は得ていないデータは、午前11ホワイトスペースを 11whtespaces最初と3001339 私のID_SA_SOURCE変数の値.... このチェックをすることはできますpleasse |
|
||||
|
を正しくときに、それ以外の空白をトリムするには、シェル変数エコーを引用する必要があります。私はエコーの使用にもお勧めします。
しかし、ここに引用する方法が適切だ。安全側に少しずつ入っているために、私はまた、 IFS社を攻撃する;私は厳密に必要なのはこことは思わないが、あなたの技術を認識する必要があります。 コード:
OLDIFS=$IFS IFS=' ' # just a newline, in single quotes while read data do MSISDN="`echo "$data" | cut -c1-10`" HOUR="`echo "$data" | cut -c11-16`" ID_SA_SOURCE="`echo "$data" | cut -c17-35`" ID_SA_DEST="`echo "$data" | cut -c36-54`" done < $TRACKING_LOGDIR/$listdata IFS=$OLDIFS コード:
awk '{ OFS=":"; print substr($0, 1, 10), substr($0, 11, 16),
substr($0, 17, 35), substr($0, 17, 35) }' $TRACKING_LOGDIR/$listdata |
while IFS=: read MSISDN HOUR ID_SA_SOURCE ID_SA_DEST; do
echo "'$HOUR': All your '$ID_SA_SOURCE' are '$ID_SA_DEST' to '$MSISDN'"
done
|