BRADI5G20430|BRADI5G20430.1||1
字符串我如何可以替換選項卡(「\ t」的)酒吧(單個或多個)? 我試過,但不」工作
sed 's/\|+/\t/g'
我也想在bash腳本這一行。
BRADI5G20430|BRADI5G20430.1||1
字符串我如何可以替換選項卡(「\ t」的)酒吧(單個或多個)? 我試過,但不」工作
sed 's/\|+/\t/g'
我也想在bash腳本這一行。
你需要躲避+
$ sed 's/|\+/\t/g' file
BRADI5G20430 BRADI5G20430.1 1
,或者你可以使用sed的-r
選項,但這個時候,+
將是「一個或多個」,你需要躲避「|」因爲在正則表達式中,它意味着交替。
$ sed -r 's/\|+/\t/g' file
BRADI5G20430 BRADI5G20430.1 1
或者使用awk,將字段分隔符設置爲「|」然後設置輸出字段分隔OFS
到標籤\t
例如
$ awk -F"|" '{$1=$1}1' OFS="\t" file
BRADI5G20430 BRADI5G20430.1 1
此替換每個選項卡以 「|」。如果你想替換所有的「|」帶有一個標籤
$ awk '{gsub(/\|+/,"\t")}1' file
BRADI5G20430 BRADI5G20430.1 1
不知道把我的頭爲什麼+
不起作用的頂部,但這會:
$ echo "BRADI5G20430|BRADI5G20430.1||1" | sed -e 's/\|\{1,\}/\t/g'
BRADI5G20430\tBRADI5G20430.1\t1
怎麼沒工作?
提示:如果你看到它沒有工作,你應該能夠看到你需要做些什麼才能使它工作 - 嘗試刪除零件並查看行爲如何變化。
提示#2:它是sed無法識別的+
部分。
sed 's/\|\|*/\t/g'
sed確實使用'+',如果不使用'-r',你只需要轉義它 – ghostdog74 2010-04-12 02:35:18