「vcc」を含むすべての文字列を削除したいです。
例:
s_regscan_ctrl_lab_2_regscan_ce[0] s_regscan_data_l_regscan s_t_regscan_data_tieoff_regscan vcc_cram_viort1_6_t
vcc_cram_viort1_7_t vcc_cram_viort1_8_t vcc_cram_viort1_9_t vcc_cram_vioxio1_0_t
vcc_cram_vioxio1_1_t vcc_cram_vioxio1_2_t vcc_cram_vioxio2_0_t vcc_cram_vioxio2_1_t
vcc_cram_vioxio2_2_t vcchg vccl vssgnd m_b_regscan_data_tieoff_regscan
予想出力:
s_regscan_ctrl_lab_2_regscan_ce[0] s_regscan_data_l_regscan s_t_regscan_data_tieoff_regscan vssgnd m_b_regscan_data_tieoff_regscan
私は以前試しました:
cat abc.txt | sed 's/\svcc.*\s//g'"
ただし、vcc* 以降のすべてのエントリを削除し、次を返します。
s_regscan_ctrl_lab_2_regscan_ce[0] s_regscan_data_l_regscan s_t_regscan_data_tieoff_regscan
誰でも助けることができますか?
答え1
タグ付けした後チクル
$ cat abc.txt
s_regscan_ctrl_lab_2_regscan_ce[0] s_regscan_data_l_regscan s_t_regscan_data_tieoff_regscan vcc_cram_viort1_6_t
vcc_cram_viort1_7_t vcc_cram_viort1_8_t vcc_cram_viort1_9_t vcc_cram_vioxio1_0_t
vcc_cram_vioxio1_1_t vcc_cram_vioxio1_2_t vcc_cram_vioxio2_0_t vcc_cram_vioxio2_1_t
vcc_cram_vioxio2_2_t vcchg vccl vssgnd m_b_regscan_data_tieoff_regscan
私たちがremove_vcc.tcl
持っているなら
#!/usr/bin/env tclsh
set fid [open [lindex $argv 0] r]
while {[gets $fid line] != -1} {
set words [split $line]
set filtered [lmap word $words {
if {[string match {*vcc*} $word]} then continue else {string cat $word}
}]
set newline [join $filtered]
if {[string trim $newline] ne ""} {
puts $newline
}
}
close $fid
それから
$ tclsh remove_vcc.tcl abc.txt
s_regscan_ctrl_lab_2_regscan_ce[0] s_regscan_data_l_regscan s_t_regscan_data_tieoff_regscan
vssgnd m_b_regscan_data_tieoff_regscan
答え2
どのように進行したいのか分かりませんが、試してみましょう。
テキストファイルからすべての文字列を削除するには、vcc
以下を使用する必要はありませんcat
。
sed 's/vcc//g' abc.txt
-i
コマンドのスイッチを使用して、sed
ファイルに修正を記録します。
以下を含むすべての行を削除するにはvcc
:
grep -v "vcc" abc.txt
すべての単語を削除するには(ここではスペースで区切られた文字列を意味します):
sed 's/\b\w*vcc\w*\b//g' abc.txt
答え3
私は次のような単純な一行を使いますawk
。
cat abc.txt | awk -v RS=" " '!/vcc/ {print $0}'
vcc
または、あなたの例では、私の考えはどこかに含めるのではなく、最初に存在する場合は削除したいので、次のことをお勧めします。
cat abc.txt | awk -v RS=" " '!/^vcc/ {print $0}'
答え4
使用awk
:
$ awk '{for(i=1;i<=NF;i++) printf "%s", ($i ~ /vcc/) ? "" : $i OFS}END{print ""}' file