我有一个文件list.txt,其中包含某些文件的路径,如:
Desktop/28_dec/script/sign_145/check/sig4n_120/mu_30 ;
Desktop/28_dec/run_1/run_12/sign_145/check/sig4n_120/mu_30 ;
Desktop/14_feb/eps_14/run14//sign_145/check/sig4n_120/mu_30
Desktop/28_dec_2013/eps3_1200/eps_nano_20/sign_130/sign_145/check/sig4n_120/mu_30
等等。这种模式非常随机。在每一行中,必须记下三列中完整路径中的三件事情;
我知道的一种方法是使用split命令,其中分隔符将是' /',然后比较字符串的一部分。我试着编写脚本,但我的脚本显示错误。 我在Linux中做了以下事情:
z =Desktop/28_feb/eps3_1200/sign_200/sig4n_120/mu_10 ;
awk '{split($z,arr,"/")}' > data.dat
然后它显示错误" unexpected token '('
" 。
我也尝试过写作
z='list.txt' ;
awk '{split($0,arr,"/")}' list.txt
感谢您回答我的问题。
答案 0 :(得分:0)
还不太清楚你在做什么 - 你提供的代码毫无意义。
解决问题的简单方法是
sed -e 's/.*\(sign_...\).*\(sig4n_...\).*\(mu_..\).*$/\1 \2 \3/' list.txt
输出(输入文件):
sign_145 sig4n_120 mu_30
sign_145 sig4n_120 mu_30
sign_145 sig4n_120 mu_30
sign_145 sig4n_120 mu_30
这假定所有三个项目(sign
,sig4n
和mu
)都存在并且格式化为一定数量的数字。你可以从这里弄明白。