2016-05-21 7 views
-1

私はこの方法でファイルを操作する必要があります。最初の列の単語の末尾に特定の文字を追加するにはどうすればよいですか?

ファイルに - 、

1_M 34566 34765 

2_M 45678 45789 

3_M 34567 34799 

X_M 67895 66900 

Y_M 34567 34890 

感謝を

1 34566 34765 

2 45678 45789 

3 34567 34799 

X 67895 66900 

Y 34567 34890 

ファイルを

+0

[ask]を読んで、必要に応じて質問してください。 –

+0

[編集ヘルプ](http://stackoverflow.com/editing-help)をご覧ください。 – Cyrus

答えて

2
$ cat data 
1 34566 34765 
2 45678 45789 
3 34567 34799 
X 67895 66900 
Y 34567 34890 

awkの使用:

sedを使用して
$ awk '{print $1 "_M",$2,$3}' data 
1_M 34566 34765 
2_M 45678 45789 
3_M 34567 34799 
X_M 67895 66900 
Y_M 34567 34890 

$ sed 's/^\S*/&_M/' data 
1_M 34566 34765 
2_M 45678 45789 
3_M 34567 34799 
X_M 67895 66900 
Y_M 34567 34890 

説明:2ndフィールドに続く "_M" とし、第三分野と連結第一フィールド アウト

  1. awk '{print $1 "_M",$2,$3}' dataプリントを。 連結演算子がawkであることに注意してください。
  2. sedコマンドと

に:

  1. sed 's/^\S*/&_M/' data 代替
  2. ^\S* =>\sに代替(sコマンド)を実行するには、空白文字を意味\S非 空白文字を意味し、* 0以上を意味する。 ^は、 へのアンカーであり、行の先頭からの一致を確実に開始します。 sedの中
  3. &はマッチした文字列
  4. 。したがって要するに、我々は^\S*_M^\S*に置き換えることを意味します。
+0

コードをありがとうございます。いくつかの説明をお願いします。私はSEDのチュートリアルでこれを実行しましたが、できませんでした。何らかの説明があれば助けになるでしょう。 – everestial007

関連する問題