ファイル内容のコピーと変更

ファイル内容のコピーと変更

ファイルの内容をコピーして重複する内容を変更する方法を提案できる人がいるかどうか疑問に思います。

たとえば、ファイルの事前コピー:

Nempar|EIJ87098.1  
Ecanceri|ORD93056.1

ファイルの投稿の重複:

Nempar|EIJ87098.1  
Ecanceri1|ORD93056.1  
Nempardup|EIJ87098.1  
Ecanceridup|ORD93056.1

特定の位置や特定のキャラクターを変更する必要はありません。重複した項目を表示するだけです。

現在私は以下を使用しています。

cat file.txt file.txt > file.dup.txt

ここに追加する方法はありますか?それとも猫はとてもシンプルですか?

答え1

この試み、

(cat file.txt && awk -F '|' '{print $1"dup|"$2}' file.txt) > file.dup.txt


cat file.dup.txt 

Nempar|EIJ87098.1
Ecanceri|ORD93056.1
Nempardup|EIJ87098.1
Ecanceridup|ORD93056.1

またはsedを使用してください:

(cat file.txt && sed 's/|/dup|/g' file.txt) > file.dup.txt

答え2

与えられた内容をed(グローバル)置換PATTERNで置き換えてから、結果を元の内容に追加できます()。fileREPLACEMENTWfile

与えられた

$ cat file
Nempar|EIJ87098.1
Ecanceri|ORD93056.1

それから

$ ed -s file << 'EOF'
,s/|/dup|/
Wq
EOF

結果

$ cat file
Nempar|EIJ87098.1
Ecanceri|ORD93056.1
Nempardup|EIJ87098.1
Ecanceridup|ORD93056.1

答え3

手順置換を使用し、sed

入力ファイルを修正してdup最初の列に追加すると想像してください。

$ sed 's/|/dup|/' file.txt
Nempardup|EIJ87098.1
Ecanceridup|ORD93056.1

これは各行の|最初の項目を置き換えます。dup|

cat次のプロセス置換形式を使用してこのファイルを変更できますcat <(command)

$ cat <(sed 's/|/dup|/' file.txt)
Nempardup|EIJ87098.1
Ecanceridup|ORD93056.1

明らかに、これは最初のコマンドと同じ出力を生成しますsed

元の入力ファイルcated を使用して、以下を生成します。

$ cat file.txt <(sed 's/|/dup|/' file.txt)
Nempar|EIJ87098.1
Ecanceri|ORD93056.1
Nempardup|EIJ87098.1
Ecanceridup|ORD93056.1

通常どおり、出力を別のファイルにリダイレクトできます。

$ cat file.txt <(sed 's/|/dup|/' file.txt) > file.dup.txt

関連情報