最初の行の最初の要素に角かっこを追加します。

最初の行の最初の要素に角かっこを追加します。

最初の行の最初の要素「8」の周りに括弧を追加したいと思います。私のファイルの例は次のとおりです。

8   089.3   96.72   61  2   0   4240    4300    2420    2360    3e-20    102
8   089.3   96.67   60  0   1   4239    4296    2419    2360    1e-18   96.9 

結果を得るには、次のコマンドを使用します。

awk '{print "("$0")"}' file.txt1

結果は次のとおりです。

(8  089.3   96.72   61  2   0   4240    4300    2420    2360    3e-20    102)
(8  089.3   96.67   60  0   1   4239    4296    2419    2360    1e-18   96.9)

以下のような出力が必要です。

(8) 089.3   96.72   61  2   0   4240    4300    2420    2360    3e-20    102
(8) 089.3   96.67   60  0   1   4239    4296    2419    2360    1e-18   96.9

答え1

ソースファイルのフィールド区切り文字がタブ(および/またはタブ区切りの出力が必要な場合)であると仮定すると、awk次のように使用できます。

awk -F '\t' -v OFS='\t' '{ $1 = sprintf("(%s)", $1) } 1' file

これにより、最初のフィールドが変更され、次に変更されたフィールドに再構成された行が出力されます。最後の1結果は出力になり、置き換えることができます{ print }

あなたのコードはこれと似たようなことをしますが、あなたは次のようになります$0みんな最初のフィールドだけでなく行。

を使用することもできますsed。これにより、残りの行は変更されません。

sed -E 's/^([^[:blank:]]+)/(\1)/' file

これは、行の先頭で空白以外の文字列と一致し、括弧内の同じ文字列に置き換えます。

もう1つの変形は、sed最初に(行の先頭にaを挿入してから最初の)スペース文字の前に挿入することです(「スペース」文字はスペースまたはタブを意味します)。

sed -E -e 's/^/(/' -e 's/([[:blank:]])/)\1/' file

このawkソリューションは簡単に修正できるため、より柔軟です。どのフィールドですが、sedソリューションを使用すると、複数の空白でもタブでも、元のファイルの区切り文字を保持できます。sed行の最初のフィールドを変更し、そのフィールドをプログラムで簡単に使用できるので(見つけやすく)、ここにソリューションのみを含めますsed

関連情報