2017-04-06 21 views
0

私は印刷/郵送業界で働き、タイトルや挨拶をメーリングリストの名前欄にマージする必要があることがよくあります。次のファイル形式を考える:私はしようとしています何Awkの名前欄に「タイトル」を追加する方法

**SEQ_NO** | **NAME** | **COMPANY**  | **so on** 
:------------ | :-------- | :----------------- | :--------------- 
1    | name1  | company1   | blahblah  | 
2    | name2  | company2   | blaseblah  | 

はNAME1、その結果、それぞれの名前の最後に「DC」を追加することで、DCは、私のように得ている 名2、DC

私が使用してこのサイト上の別の質問から助けを借りて見つけることができるように近い次のAwk(パイプ区切りファイルの入力および出力)で:

awk -F'|' -vOFS='|' '{$2 = $2 ", DC" }1' [input file] > [output file] 

しかし、これは私が好むもヘッダー行に追加されたテキストを追加します避けるために。確かに1行で手作業で編集するのには時間がかかりませんが、理想的には上記のスクリプトを既存のPerlスクリプトに組み込みたいのですが、上記の結果を達成する方法を知りたいのですが、列2のヘッダーから「DC」を選択します。

P.S.書式設定の問題でご迷惑をおかけしております。

+0

は、最終的な結果 – RomanPerekhrest

答えて

0

コードにNR > 2という条件を追加します。つまり、2行目以降のみ有効です。

$ gawk -F'|' -vOFS='|' 'NR > 2 {$2 = $2", DC" }1' data.txt 
SEQ_NO | NAME | COMPANY | so on 
:------------ | :-------- | :----------------- | :--------------- 
1 | name1 , DC| company1 | blahblah | 
2 | name2 , DC| company2 | blaseblah | 
+0

になります。これは非常によくどのように動作するか... NR」へ "> 2 NR" を変更した後に表示さ> 1 "であり、確かに最も迅速に考慮する。もう少し余分な時間を取っても、私はもう一つの方法を試してみるよ、ありがとう@EwanMellor – OhmEye

0

これを試してみてください -

$ cat file.txt 
**SEQ_NO** | **NAME** | **COMPANY**  | **so on** 
:------------ | :-------- | :----------------- | :--------------- 
1    | name1  | company1   | blahblah  | 
2    | name2  | company2   | blaseblah  | 
$ 
$ 
$ cat filter.awk 
BEGIN{FS=OFS="|"} 
{ 
if($1 ~ /[[:digit:]]/) 
{ 
    gsub(/[[:space:]]+ /,", DC ",$2); print 
} 
else 
{ 
    print $0 
} 
} 

$ awk -f filter.awk file.txt 
**SEQ_NO** | **NAME** | **COMPANY**  | **so on** 
:------------ | :-------- | :----------------- | :--------------- 
1    | name1, DC | company1   | blahblah  | 
2    | name2, DC | company2   | blaseblah  | 

を説明 -

$1 ~ /[[:digit:]]/    : Looking for numeric field in column 1 i.e., SEQ_NO. 
gsub(/[[:space:]]+ /,", DC ",$2) : Searhing for multiple space in column 2 and replacing them with ", DC". 
+0

あなたのコードの最後に何かがないようです@VIPIN_KUMAR。 Awkにはまったく新しくないので、確信が持てませんが、データに対して実行すると何も起こりませんでした。 – OhmEye

+0

@OhmEye - awkスクリプトでawkのライナーを変更しました。私の更新されたAnswerを確認してください。 –

関連する問題