他のファイルのファイルから複数行を検索する

他のファイルのファイルから複数行を検索する

複数行を含むテキストファイルがあり、特定のテキストを含む行を検索し、この行の先頭に#を追加したいと思います。

例:file1を変更したいです。

acnet           6801/tcp                # ACNET Control System Protocol
acnet           6801/udp                # ACNET Control System Protocol
dlip            7201/tcp                # DLIP
dlip            7201/udp                # DLIP
ssp-client      7801/tcp                # Secure Server Protocol - client
ssp-client      7801/udp                # Secure Server Protocol - client

inputfile1のポートを見つけたいです。入力ファイルには以下が含まれます。

6801
7801

したがって、file1の最終出力は次のようになります。

#acnet           6801/tcp                # ACNET Control System Protocol
#acnet           6801/udp                # ACNET Control System Protocol
dlip            7201/tcp                # DLIP
dlip            7201/udp                # DLIP
#ssp-client      7801/tcp                # Secure Server Protocol - client
#ssp-client      7801/udp                # Secure Server Protocol - client

頑張った

cat /etc/services |grep -f ports.txt | awk  '{ print"#" $g}';

しかし、これは私に画面に出力を与えます。ファイルでどのように変更できますか?

ベストアンサー1

次のようにしてみてください。

awk -F"[ \t]*|/" 'NR==FNR{A[$1]; next} $2 in A { printf "#" }1' ports.txt /etc/services > newfile

出力が正しい場合は、次の場所にコピーできます。/etc/services

おすすめ記事