![](/img/trans.png)
[英]How to delete blocks of lines in a file using bash with a pattern and save the remaining on another file
[英]How to delete first N lines in a file and retain the remaining lines using bash
我正在尝试使用sed删除文件中的第一个块,并保留剩余的最后几行并将其保存到文件中。 但是,文件的最后几行未保存。
我使用以下代码删除了前15行:
sed '1,15d' local_accounts.txt > remaining_accounts.txt
但是,最后几行也被删除。
local_accounts.txt
dn: uid=Nemuadmin,ou=People,fsFragmentId=Security,fsClusterId=ClusterRoot
cn: Nemuadmin
uid: Nemuadmin
objectClass: FSSecAccount
objectClass: posixAccount
objectClass: shadowAccount
objectClass: extensibleObject
uidNumber: 10001
gidNumber: 557
homeDirectory: /home/Nemuadmin
loginShell: /bin/bash
shadowMin: 0
shadowMax: 99999
shadowWarning: 7
dn: uid=toosa,ou=People,fsFragmentId=Security,fsClusterId=ClusterRoot
cn: toosa
uid: toosa
objectClass: FSSecAccount
objectClass: posixAccount
objectClass: shadowAccount
objectClass: extensibleObject
uidNumber: 10000
gidNumber: 400
homeDirectory: /home/toosa
loginShell: /bin/bash
shadowMax: 180
shadowWarning: 30
shadowInactive: 0
dn: uid=test_user1,ou=People,fsFragmentId=Security,fsClusterId=ClusterRoot
cn: test_user1
uid: test_user1
objectClass: FSSecAccount
objectClass: posixAccount
objectClass: shadowAccount
objectClass: extensibleObject
uidNumber: 10200
gidNumber: 10200
homeDirectory: /home/test_user1
loginShell: /bin/bash
shadowMax: 180
shadowWarning: 30
shadowInactive: 0
dn: uid=test_user2,ou=People,fsFragmentId=Security,fsClusterId=ClusterRoot
cn: test_user2
uid: test_user2
objectClass: FSSecAccount
objectClass: posixAccount
objectClass: shadowAccount
objectClass: extensibleObject
uidNumber: 20000
gidNumber: 20000
homeDirectory: /home/test_user2
loginShell: /bin/bash
shadowMax: 180
shadowWarning: 30
shadowInactive: 0
dn: uid=test_user3,ou=People,fsFragmentId=Security,fsClusterId=ClusterRoot
cn: test_user3
uid: test_user3
objectClass: FSSecAccount
objectClass: posixAccount
objectClass: shadowAccount
objectClass: extensibleObject
uidNumber: 30000
gidNumber: 30000
homeDirectory: /home/test_user3
loginShell: /bin/bash
shadowMax: 180
shadowWarning: 30
shadowInactive: 0
dn: cn=test_group1,ou=Group,fsFragmentId=Security,fsClusterId=ClusterRoot
objectClass: FSSecGroup
objectClass: posixGroup
objectClass: groupOfNames
objectClass: FSSecAccessControl
objectClass: extensibleObject
cn: test_group1
gidNumber: 10200
member: uid=test_user1,ou=People,fsFragmentId=Security,fsClusterId=ClusterRoot
memberUid: test_user1
dn: cn=test_group2,ou=Group,fsFragmentId=Security,fsClusterId=ClusterRoot
objectClass: FSSecGroup
objectClass: posixGroup
objectClass: groupOfNames
objectClass: FSSecAccessControl
objectClass: extensibleObject
cn: test_group2
gidNumber: 20000
member: uid=test_user2,ou=People,fsFragmentId=Security,fsClusterId=ClusterRoot
memberUid: test_user2
dn: cn=test_group3,ou=Group,fsFragmentId=Security,fsClusterId=ClusterRoot
objectClass: FSSecGroup
objectClass: posixGroup
objectClass: groupOfNames
objectClass: FSSecAccessControl
objectClass: extensibleObject
cn: test_group3
gidNumber: 30000
member: uid=test_user3,ou=People,fsFragmentId=Security,fsClusterId=ClusterRoot
memberUid: test_user3
dn: fssecPermissionId=PAMCLI,fsFragmentId=Permissions,fsFragmentId=Security,fsClusterId=ClusterRoot
fssecAssignedGroupRoleRef: _oms_sudoer_ptally
fssecPermissionCLICommand: /sbin/pam_tally2
objectClass: FSSecPermission
objectClass: FSSecCLIPermission
dn: fssecPermissionId=perm1,fsFragmentId=Permissions,fsFragmentId=Security,fsClusterId=ClusterRoot
objectClass: FSSecPermission
dn: fssecPermissionId=perm2,fsFragmentId=Permissions,fsFragmentId=Security,fsClusterId=ClusterRoot
objectClass: FSSecPermission
dn: fssecPermissionId=perm3,fsFragmentId=Permissions,fsFragmentId=Security,fsClusterId=ClusterRoot
objectClass: FSSecPermission
执行sed命令后:
remaining_accounts.txt
dn: uid=toosa,ou=People,fsFragmentId=Security,fsClusterId=ClusterRoot
cn: toosa
uid: toosa
objectClass: FSSecAccount
objectClass: posixAccount
objectClass: shadowAccount
objectClass: extensibleObject
uidNumber: 10000
gidNumber: 400
homeDirectory: /home/toosa
loginShell: /bin/bash
shadowMax: 180
shadowWarning: 30
shadowInactive: 0
dn: uid=test_user1,ou=People,fsFragmentId=Security,fsClusterId=ClusterRoot
cn: test_user1
uid: test_user1
objectClass: FSSecAccount
objectClass: posixAccount
objectClass: shadowAccount
objectClass: extensibleObject
uidNumber: 10200
gidNumber: 10200
homeDirectory: /home/test_user1
loginShell: /bin/bash
shadowMax: 180
shadowWarning: 30
shadowInactive: 0
dn: uid=test_user2,ou=People,fsFragmentId=Security,fsClusterId=ClusterRoot
cn: test_user2
uid: test_user2
objectClass: FSSecAccount
objectClass: posixAccount
objectClass: shadowAccount
objectClass: extensibleObject
uidNumber: 20000
gidNumber: 20000
homeDirectory: /home/test_user2
loginShell: /bin/bash
shadowMax: 180
shadowWarning: 30
shadowInactive: 0
dn: uid=test_user3,ou=People,fsFragmentId=Security,fsClusterId=ClusterRoot
cn: test_user3
uid: test_user3
objectClass: FSSecAccount
objectClass: posixAccount
objectClass: shadowAccount
objectClass: extensibleObject
uidNumber: 30000
gidNumber: 30000
homeDirectory: /home/test_user3
loginShell: /bin/bash
shadowMax: 180
shadowWarning: 30
shadowInactive: 0
如何删除第一个块并保留其他块? 先感谢您。
一个简单的选择是使用tail
,您可以执行以下操作:
tail -n +15 local_accounts.txt > remaining_accounts.txt
-n +15
表示从第15行开始。
这将保留未更改的文件local_accounts.txt
并使用与local_accounts.txt
相同的内容( local_accounts.txt
第15行开始)创建remaining_accounts.txt
的local_accounts.txt
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.