2番目の列「名前」を修正し、名前間のスペースをすべて削除し、残りのtxtファイルは変更せずにそのままにして印刷したいと思います。
これは私の入力です(タブで区切られたフィールド)。
Roll NO Name RandomColumn1 RandomColumn2
1 Jason James my value my val 3
私が望む出力:
Roll NO Name RandomColumn1 RandomColumn2
1 JasonJames my value my val 3
私が成功せずに使用したコマンドは次のとおりです。
awk '{$3=$4; print }' | sed "s/^ *//"
答え1
awk 'BEGIN{ FS=OFS="\t" }{ gsub(" ", "", $2) }1' infile
FS は入力フィールドの区切り記号です。 OFS は出力フィールド区切り記号です。どちらも tabs に設定され、\t
2 番目のフィールドのすべての空白文字を削除し、最終更新を印刷します。これ1
使用される。
答え2
雇用GNU sed拡張正規表現モードでは、指示どおりに-E
実行できます。 2番目のフィールドは、最初に\n
パターンスペースに存在しないことが知られているトークン()で区切られます。次に、ループ内のこれらのマーカー間のスペースを選択し、ループの後ろのフィールド区切り記号に市場を復元します。
sed -Ee '
s/\t/\n/;s//\n/;ta
:a
s/(\n.*) (.*\n)/\1\2/
ta
y/\n/\t/
' file
私達は利用できますPython 3目的の出力を取得するためのネストされたリストについて:
python3 -c 'import sys
ifs,ors,ifile = "\t", "\n",sys.argv[1]
spc,ofs = " ",ifs
with open(ifile) as f:
print(*[ofs.join([f1,f2.replace(spc,""),f3_])
for l in f for f1,f2,f3_ in [l.rstrip().split(ifs,2)]],sep=ors)
' file
perl -F'\t' -pale '
substr($_,1+index($_,"\t$F[1]"),length($F[1])) =~ tr/ //d;
' file
答え3
注文する
awk 'NR>1{$2=$2$3;$3=" "}1' filename
出力
Roll NO Name RandomColumn1 RandomColumn2
1 JasonJames my value my val 3