2

ファイル内の 1 つの列を編集する際に厄介な問題があります。
私の目標は、\ 記号で区切られた部分を取り除くために、2 列目の文字列を置き換えることです。
明確にするために、これはソース ファイルの例です: aaa.txt

0 OS1\admin
1 OS1\テスト
2 OS3\ユーザー
3 OS5\テスト
4 OS2\テスト
5 osx\admin

そのように変更する必要があります

0 管理者
1回のテスト
2 ユーザー
3 テスト
4 テスト
5 管理者

それは私を夢中にさせます、助けてください:) Sed / Awkまたは純粋なbashは単なるgr8です

4

3 に答える 3

2

シード

sed 's/\S*\\//' input.txt

おかしい

awk '{sub(/[^[:space:]]*\\/, "")}1' input.txt

バッシュ

while read -r x y; do echo $x ${y##*\\}; done <input.txt
于 2012-04-12T11:44:58.570 に答える
0

最初の列をキャプチャしてから、2 番目の列の最初の部分を削除できますか?

sed 's/\(.*\t\).*\\/\1/g'

\\(.\*\t\\)は列 1 をキャプチャする必要があり、列 2 の \ まで一致する必要があります。次に、これを、前にキャプチャした列 1 である に.\*\\置き換えます。\1

于 2012-04-12T11:40:55.387 に答える
0

ファイルのインライン編集が必要な場合は、次を試すことができます。インライン編集をテストする前に、必ずファイルをバックアップしてください。

sed -i 's/   .*\\/   /g' /yourfile

OS Xの場合は、以下を試すことができます (インライン編集をテストする前に、必ずファイルをバックアップしてください)。

sed -i '' 's/   .*\\/   /g' /yourfile
于 2012-04-18T21:08:36.250 に答える