この文字が特定の列 (80 など) にあるように、特定の文字 (& など) で終わるすべての行を置き換える必要があります。どのツールが最適ですか? 私はsedについて考え始めました:
sed 's/\(.*\)&/\1 <what should be here??> &/'
しかし、 & が列 80 に移動するような可変数のスペースに置き換える方法を理解できません。ありがとう!
Perl に置換部分を評価して結果を計算するように指示するto/e
スイッチを使用します。s///
#! /usr/bin/env perl
use strict;
use warnings;
while (<>) {
s/^(.*)(&)$/$1 . " " x (79 - length $1) . $2/e;
print;
}
サンプルラン:
$ echo -e 'foo&\n&\nbar &\nbaz' | ./align-アンパサンド フー& & バー & バズ
入力に TAB 文字が含まれている場合は、より高度な処理を使用する必要があります。
あなたの質問を正しく理解しているかどうかはわかりませんが、次のようなことを試すことができます(ファイルがスペースで区切られていると仮定します):
awk '/&$/ {for(i=1;i<=NF;i++) $i=(i==80)?"& "$i:$i}1' yourFile
awk '/&$/{$80="&"}1' file