awk + ​​最初のホスト名の後に2番目の文字列(IP)をすべて印刷する方法

awk + ​​最初のホスト名の後に2番目の文字列(IP)をすべて印刷する方法

IPアドレスがホスト名の後に続くように、次の(APIの出力)をどのように印刷しますか?

kafka02.ur.com
102.16.235.69
master01.ur.com
102.16.235.61
master02.ur.com
102.16.235.62

はい

kafka02.ur.com     102.16.235.69
master01.ur.com    102.16.235.61
master02.ur.com    102.16.235.62

答え1

使用sed:

sed -e 'N;s/\n/\t/' in.txt

1つのタブで両方の行を結合します。

答え2

$ paste - - <file
kafka02.ur.com  102.16.235.69
master01.ur.com 102.16.235.61
master02.ur.com 102.16.235.62

このpasteコマンドを一緒に使用すると、- -標準入力から読み取られ、file2つの出力列に入ってくる行(から)が配布されます。

区切り文字はタブですが、optionsで変更できます-d

(要求時awk):

$ awk '{ printf("%s\t", $0) } { getline } { print }' file

答え3

そしてawk

awk '{getline x; printf("%s\t%s\n", $0, x)}' file.txt
  • getline x次のレコードを取得して変数として保存x

  • printf("%s %s\n", $0, x)希望の形式で記録を印刷する


例:

% cat file.txt
kafka02.ur.com
102.16.235.69
master01.ur.com
102.16.235.61
master02.ur.com
102.16.235.62

% awk '{getline x; printf("%s\t%s\n", $0, x)}' file.txt
kafka02.ur.com  102.16.235.69
master01.ur.com 102.16.235.61
master02.ur.com 102.16.235.62

関連情報