固定幅ファイルには15個のフィールドがあります。フィールド5にはアドレスが含まれており、文字19で始まり、文字58(長さ40)で終わります。場合によっては、アドレスに\n
文字(データの改行文字)が含まれることがあります。
実際の行区切り文字に影響を与えずに、どのように二重スペースに置き換えることができますか?
ファイルの更新されたデータセットが提供されます。\n
ファイルの一部の行にはデータに文字があり、残りの部分だけが大丈夫です。つまり、\n
文字はありません。以下の例を参照して処理方法を確認してください。
入力例:
01 DAVIDS 800 ABC VISAL NAGAR, ABC
BUILDING HYD TELANGANA 6000 DEVELOPER HR DEPT FULL TIME EMPLOYEE
03 ABCDEF 600 PQR NNNNN NAGAR, YYY BUILDING NZB TELANGANA 5000 DEVELOPER SA DEPT PART TIME EMPLOYEE
02 KAMAL 900 XYZ KAMAN NAGAR, DEF
BUILDING SEC TELANGANA 8000 DEVELOPER MR DEPT FULL TIME EMPLOYEE
04 CCCCCC 200 KKK HHHHH NAGAR, JJJ BUILDING KBR TELANGANA 1000 DEVELOPER AD DEPT FULL TIME EMPLOYEE
希望の出力:
01 DAVIDS 800 ABC VISAL NAGAR, ABC BUILDING HYD TELANGANA 6000 DEVELOPER HR DEPT FULL TIME EMPLOYEE
03 ABCDEF 600 PQR NNNNN NAGAR, YYY BUILDING NZB TELANGANA 5000 DEVELOPER SA DEPT PART TIME EMPLOYEE
02 KAMAL 900 XYZ KAMAN NAGAR, DEF BUILDING SEC TELANGANA 8000 DEVELOPER MR DEPT FULL TIME EMPLOYEE
04 CCCCCC 200 KKK HHHHH NAGAR, JJJ BUILDING KBR TELANGANA 1000 DEVELOPER AD DEPT FULL TIME EMPLOYEE
答え1
$ sed 'N; s/\n/ /' file
01 DAVIDS 800 ABC VISAL NAGAR, ABC BUILDING HYD TELANGANA 6000 DEVELOPER HR DEPT FULL TIME EMPLOYEE
02 KAMAL 900 XYZ KAMAN NAGAR, DEF BUILDING SEC TELANGANA 8000 DEVELOPER MR DEPT FULL TIME EMPLOYEE
sed
これは必要な修正を実行するために使用されます。
元のファイルの各行について、次の行を読み、改行文字を区切り文字として使用して現在の行に追加します。これはN
のコマンドを介して行われますsed
。次に、このs///
コマンドを使用して、区切り文字を2つの空白文字に置き換えます。
出力を新しいファイル名にリダイレクトして保存します。
sed 'N; s/\n/ /' file >newfile