使用 SED 截断前 16 个字符

使用 SED 截断前 16 个字符

我正在使用 SED 命令尝试截断行。我目前正在尝试从文本文件中截取前 16 个字符(逐行)

示例行:

psinfo -s -c   psinfo -s -c  ALASTAIR-MUNRO    
psinfo -s -c   psinfo -s -c  ANDREWATKINSON    
psinfo -s -c   psinfo -s -c  ANDY-KAYE         
psinfo -s -c   psinfo -s -c  ANDYTURNER        
psinfo -s -c   psinfo -s -c  CAD-SPARE2        
psinfo -s -c   psinfo -s -c  CAD-SPARE3        
psinfo -s -c   psinfo -s -c  CADTEMP1          
psinfo -s -c   psinfo -s -c  CARLWALKER        
psinfo -s -c   psinfo -s -c  CAROLEGIBBONS     
psinfo -s -c   psinfo -s -c  CHRIS-SMITH 

我正在尝试删除第一个部分PSinfo -s -c,然后将其转换为单独的 txt

这是我得到的但没有起作用的东西(如下)有什么想法吗?

BIN\sed -e 's/^\(.\{60\}\).*/\16/' Working\Hostnames3.txt > Working\Hostnames4.txt

答案1

实现此目的的一种简单且经济的方法是:

cut -c 16- hostname.txt > altered_hostname.txt

这个简单命令的神奇部分cut在于这两个选项:

-c,   --characters=LIST
       select only these characters
 N-    from N'th byte, character or field, to end of line

答案2

你可以尝试这个命令(awk)

awk '{sub(".*" $3 FS,"")}1' Working/Hostnames3.txt > Working/Hostnames4.txt

从输入文件中删除前三个字段(据我了解,这是您所需要的) PS 以下是上述脚本的执行示例:

# cat in
a b c d
aa bb cc dd
a1 b1 c1 d1

# awk '{sub(".*" $3 FS,"")}1' in >out
# cat out
d
dd
d1

答案3

另一种方法:使用 grep 获取最后一个psinfo ....

grep -Po '.*\Kpsinfo.*'

相关内容