特定の文字の前後の文字を保持

特定の文字の前後の文字を保持

特定の文字(この場合_)の前後の文字を保存したいと思います。 cutとsedを試しましたが、文字の前または後の部分を削除しました。

私の出力は次のとおりです

7_38    98.97
7_37    98.59
7_36    98.79
7_35    98.93
7_34    98.57
7_33    99.70
7_32    99.13

「_」の後の数字を削除し、2番目の列を次のように出力として保持したいと思います。

7   98.97
7   98.59
7   98.79
7   98.93
7   98.57
7   99.70
7   99.13

答え1

_その後、空白以外のすべての文字を削除したいようです。

sed 's/_[^[:blank:]]*//' < file

答え2

awkを使ってみましたか?これにより、行きたい場所に行くことができます。

awk '/_/ {gsub("_.*","",$1); print}' < input.txt

答え3

awkを使う息子機能:

awk '{ sub("_.*","",$1) }1' OFS='\t' file

出力:

7   98.97
7   98.59
7   98.79
7   98.93
7   98.57
7   99.70
7   99.13

答え4

複数の文字をフィールド区切り文字(スペースとアンダースコア)として使用し、フィールド1と3のみを印刷できます。

awk -F'_| +' '{print($1,$3)}' file

関連情報