我有一个用管道符分隔的文件,其中一个列中的某些值/记录包含在值本身中的管道符,使它看起来像比实际列数更多 - 注意"第8列"(加粗)中间有管道符。这实际上应该显示为"|col u lm n8|",其中管道符的位置应替换为空格。
然而,这将会改变第七个“|”符号之后的所有其余“|”符号,直到该行结束。我的问题是如何使它更改第七个“|”符号之后的所有“|”符号为空格,但仅限于“|2016”列之前?谢谢。
column1|column2|column3|column4|column5|column6|column7|**col|u|lm|n8**|2016|column10|column11|column12|column13|column14|
我需要用空格替换列8中的这些管道符。
好消息是,文件中列7和列9(|2016)的数据相同,因此我可以使用sed进行操作,如下:
sed 's/|/ /7g;s/.\(|2016\)/|\1/'
然而,这将会改变第七个“|”符号之后的所有其余“|”符号,直到该行结束。我的问题是如何使它更改第七个“|”符号之后的所有“|”符号为空格,但仅限于“|2016”列之前?谢谢。
col8=$(sed 's/\([^|]*|\)\{7\}\(.*\)|2016.*/\2/' file ); echo "Debug line: col8=${col8}, fixed ${col8//|/ }"; sed 's/^\(\([^|]*|\)\{7\}\).*|2016/\1'"${col8//|/ }"'|2016/' file
гҖӮиҝҷеҜ№дәҺжҷ®йҖҡж–Ү件зҡ„й—®йўҳ并дёҚжңүеё®еҠ©пјҢеӣ дёәжӮЁйңҖиҰҒиҝӣиЎҢдёҖдёӘйқһеёёзј“ж…ўзҡ„whileеҫӘзҺҜгҖӮ - Walter A